简介
Promise
是一种异步编程的解决方案。但是,在一些异步处理业务中,可能需要根据某些结果来继续处理其他任务,而 Promise
并不能很好地解决这个问题。promise-cascade
作为 Promise
的扩展,提供了更为灵活的 Promise
处理能力。
promise-cascade
会依次串联 Promise
对象,一个 Promise
对象的 resolve
可能会返回另一个需要执行的 Promise
,因此可以实现根据上一个 Promise
的结果来决定下一个 Promise
的执行。
安装
使用 npm
安装 promise-cascade
:
npm install promise-cascade --save
使用方法
基本用法
首先需要引入 PromiseCascade
:
import PromiseCascade from 'promise-cascade';
接着创建需要串联执行的 Promise 对象数组:
const promiseArray = [ Promise.resolve(100), Promise.resolve(200), Promise.resolve(300) ];
最后使用 PromiseCascade
对象进行串联执行:
const promiseCascade = new PromiseCascade(promiseArray); promiseCascade.then(result => { console.log(result); // output: 300 });
高级用法
promise-cascade
提供了两个重要的回调函数:
beforeNext
:在执行下一个Promise
前会调用该函数,可以通过该函数去判断执行是否继续。afterNext
:在执行下一个Promise
后会调用该函数。
-- -------------------- ---- ------- ----- ------------ - - -- ----- -- -- ----- -------------- - --- ---------------------------- - ----------- -------- ------------- ------------ ----- -- - -------------------- -------------------------- ------------------------- -- ----- - - ------- ------- --------------- --- -- - ------- - -- ---------- -------- ------------- ------------ ----- -- - -------------------- -------------------------- ------------------------- -- ----- - - ------- --------- -- ------------- --- -- - ------------- - - --- -------------------------- -- - -------------------- ---
示例代码
-- -------------------- ---- ------- ------ -------------- ---- ------------------ -- ----- ------- -------- ----- ------------ - --------- ----- -- - ------ --- ----------------- ------- -- - ------------- -- - --------------------- ---------- -------------- -- --------- --- -- ----- ------------ - - -- -- ------------------ ----- ---- ------ -- - ------- --- ----- --- - ------ ----------------------- ---- ---- - ------ ------------------ ----- ---- -- ------ -- - ------- --- ----- --- - ------ ----------------------- ---- ---- - ------ ------------------ ----- ---- - -- ----- -------------- - --- ---------------------------- - ----------- -------- ------------- ------------ ----- -- - -------------------------- -------- ---------------------------- -------------- --------------------------- ------------- ------- -- ---------- -------- ------------- ------------ ----- -- - ------------------------- -------- ---------------------------- -------------- --------------------------- ------------- -- ------------- --- -- - ------------- - - --- -------------------------- -- - -------------------- -- ------- ---- - ---
注意事项
当串联的 Promise 不返回任何值时,需要使用 Promise.resolve(null)
替代原本的 Promise 对象。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056f6781e8991b448e79ed