什么是 bluebird_ext
bluebird_ext 是一个使用 Bluebird 库的扩展,在 Bluebird 的基础上增加了一些常用的异步处理函数封装,使得我们在使用 Bluebird 进行异步操作时更加方便。这个库可以在 Node.js 和浏览器环境下使用。
安装 bluebird_ext
使用 npm 安装:
npm install bluebird_ext
使用 bluebird_ext
引入
在 Node.js 中引入:
var Promise = require('bluebird'); var ext = require('bluebird_ext')(Promise);
在浏览器中引入:
<script src="path/to/bluebird.js"></script> <script src="path/to/bluebird_ext.js"></script> <script> var ext = bluebird_ext(Promise); </script>
API
ext.delay(ms, value)
延时一定时间后返回指定的值,类似于 setTimeout
,不过是用 Promise 实现的。
ext.delay(1000, 'hello').then(function(value) { console.log(value); // 'hello' });
ext.timeout(promise, ms, timeoutValue)
如果一个 Promise 在一定时间内没有返回,则返回一个指定的值,类似于 Promise.race
,不过增加了超时判断。
-- -------------------- ---- ------- --- ------- - --- ------------------------- - --------------------- - ----------------- -- ------ --- -------------------- ----- ------------------------------- - ------------------ - - ------- -- ------ -------- ---------------------- - ------------------- - - ----- -- ------- -------- --- -------------------- ----- ------------------------------- - ------------------ - - ------- -- ------ ------ ---------------------- - ------------------- - - ----- ---
ext.forEach(items, action)
并发处理一个数组,类似于 Promise.all
,但是这个函数能够保证每个 Promise 都会按照数组顺序执行,即使前面的 Promise 已经返回了。这个函数返回的 Promise 的值是原数组中所有 Promise 返回的值(按照原数组顺序排列),如果其中任意一个 Promise 返回了错误,则整个 Promise 就会被拒绝,并抛出错误。
-- -------------------- ---- ------- --- ---- - - ------------------------ ----------------------- ----------------------- -- ----------------- ------------- - ------ -------- -- -- -------- - -- --- ---- -- ----------------------- - -------------------------------- -- ------- ---- -- ---------------------- - ------------------- -- ---- ---
ext.map(items, action)
并发处理一个数组,并将每个 Promise 返回的值映射成一个新数组,类似于 Promise.all
,但是这个函数能够保证每个 Promise 都会按照数组顺序执行,即使前面的 Promise 已经返回了。这个函数返回的 Promise 的值是一个新数组,新数组的每个元素对应原数组中每个 Promise 的返回值,如果其中任意一个 Promise 返回了错误,则整个 Promise 就会被拒绝,并抛出错误。
-- -------------------- ---- ------- --- ---- - - ------------------------ ----------------------- ----------------------- -- ------------- ------------- - ------ --------------------------- - ------ ------------ --- ------------------------ - -------------------- -- ------- ---- ---- ---------------------- - ------------------- -- ---- ---
ext.reduce(items, action, initialValue)
对一个数组进行异步操作,类似于 Array.prototype.reduce
,但是这个函数是异步的。这个函数返回的 Promise 的值是最后一个 Promise 返回的值,如果其中任意一个 Promise 返回了错误,则整个 Promise 就会被拒绝,并抛出错误。
-- -------------------- ---- ------- --- ---- - --- -- -- -- --- ---------------- ------------- ---- - ------ --------------- --- - ----- -- -------------- -- ------------------------ - -------------------- -- - - - - - - - - - - -- ---------------------- - ------------------- -- ---- ---
总结
bluebird_ext 提供了一些在使用 Bluebird 时比较常用的异步处理函数封装,在异步操作中提供了更加方便的使用方式。通过本文的介绍,希望读者能够更加深入地理解 Promise 和 Bluebird,并掌握 bluebird_ext 的使用方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005609881e8991b448ded04