npm 包 when-master 使用教程

阅读时长 5 分钟读完

在前端开发中,常常需要处理异步操作的代码,例如进行 ajax 请求、读取文件等等,这时候我们需要用到 Promise 对象来进行处理。而在 Promise 对象中,when.js 库就是一个非常好用的工具。当然现在,when.js 已经停止维护,对于一些新项目来说,我们需要寻找一些替代方案。当然可以选择比较流行的 Promise 实现库,例如 BluebirdQ 等等。但是今天我要介绍的是一个比较小众的 Promise 库 —— when-master,它的优点是轻量易用,API 也比较简单。本篇文章就是一份介绍当下使用 when-master 的指南。

安装

使用 when-master 首先需要在项目中安装这个依赖。使用 npm 命令即可完成:

这样我们就可以在项目中使用这个库了。

基础使用

在代码中引入 when-master 库:

then 方法是 when-master 最核心的方法,通过它我们可以在 Promise 对象中注册回调函数,在 Promise 对象的状态发生改变的时候被调用。比如:

可以看出,$.get('api/user') 返回的是 Promise 对象,我们通过 when 传入这个 Promise 对象,等待其返回结果。当 Promise 对象的状态发生改变之后,我们就可以在 then 中获取到返回的结果。当然你也可以通过 catch 方法捕获 Promise 对象中的错误:

Promise.all

when-master 也支持使用 Promise.all 的形式,用于并行处理多个异步请求。比如:

Promise.race

另外一个比较实用的方法是 Promise.race,通过它我们可以等待多个异步请求之一先完成。示例:

进阶使用

延迟执行

有时我们需要在某些条件达成之后再执行异步请求,这时就可以使用 when.deferred 方法。比如:

-- -------------------- ---- -------
-------- ------------------ -
    --- -------- - -------------
    --------------------- -
        -------------------
    -- ------
    ------ -----------------
-

-------------------------- -- -
  ---------------- -- --------- ---- --- ----------
---

deferred 方法返回的是一个对象,包含有三个方法:resolve、reject 和 promise,其中 promise 就是一个 Promise 对象,我们可以通过调用其方法改变 Promise 对象的状态,让其触发 then 或 catch 方法的执行。

并发限制

在实际项目中,我们可能需要限制并发请求数,避免同时打开过多的请求导致服务器过载。这时可以结合 when-master 提供的 throttle 和 map 方法进行处理。比如限制所有的 ajax 请求最大并发数量为 2:

-- -------------------- ---- -------
----------------
    ------------------- --
-
-----------------------
     ------ ----------------
--
-----------------------
    --------------------
---

这样当我们在向服务器发送 ajax 请求时,最多只会同时有两个请求在进行中。当某个请求完成后,另外一个会自动开始。

总结

通过以上介绍,相信大家已经可以基本掌握 when-master 的使用了。当然,这里只是对 when-master 的一个简单介绍,详细的 API 及其他高级用法可以参考 官方文档。当然对于一些大型项目而言,可能需要使用更加健壮的 Promise 库,但是对于一些小型的个人项目或者原型开发,when-master 还是一款非常不错的工具。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006710b8dd3466f61ffe109

纠错
反馈