快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → Node.js 工具库 BlueBird 的一些例子:map,each 和 some

Node.js 工具库 BlueBird 的一些例子:map,each 和 some

时间:2022-10-02 09:37:29人气:作者:快盘下载我要评论

map

我是 Array.map() 函数的模拟,但用于异步任务。 我可以接受一个并发参数并返回一个 Promise,当所有任务完成后该 Promise 将被 resolved。 我的代码更短,特别是当用户需要限制并行任务的数量时非常有用。

看个具体的例子:

const bluebird = require('bluebird');

async function task(data, ms = 1000) {
console.log(' in async task: ', data);
await bluebird.delay(ms);
return data;
}

bluebird.map(['A', 'B', 'C', 'D', 'E', 'F'], async (item) => {
return task(item);
}, { concurrency: 1 }).then((result) => {
console.log('final result:', result);
});

每隔一秒钟,打印一行语句:in async task: XX

Node.js 工具库 BlueBird 的一些例子:map,each 和 some

map 输入参数全部被处理后,打印:​​final result:[ 'A', 'B', 'C', 'D', 'E', 'F' ]​

如果把 Concurrency 参数改成 2,那么每秒钟同时处理两个元素。

each

BlueBird 采用一个可迭代的参数并像原生函数 Array.forEach() 一样对其进行循环。 它还采用了一个回调参数,它可以是异步函数,也可以是任何返回 Promise 的函数。 这个方法不会一次完成所有任务,而是一个接一个地完成任务。 换句话说,每个单位时间做一件事。 由于开发人员不能在原生的 Array.forEach() 函数内进行异步工作,这种场景下可以切换到 BlueBird 的 forEach 实现。

下面的代码和 concurrency = 1 的 map 效果完全一致:

const bluebird = require('bluebird');

async function task(data, ms = 1000) {
console.log('in async task for each: ', data);
await bluebird.delay(ms);
return data;
}

bluebird.each(['A', 'B', 'C', 'D', 'E', 'F'], async (item) => {
return task(item);
}).then((result) => {
console.log(result);
});

some

some 将一组 promise 作为第一个参数,将 count 参数作为第二个参数。 该方法返回一个 Promise,一旦给定 Promise 数组中的 Promise 被 resolved 的个数达到了 count,some 返回的 Promise 就会被 resolve.

例如,如果您给我一个包含 10 个承诺和 3 个作为计数参数的列表,我将返回一个承诺,一旦您的列表中的 3 个承诺被履行,该承诺就会被履行。 结果,我返回一个数组,其中包含已履行承诺的结果。

看个具体的例子:

const bluebird = require('bluebird');

async function task(data, ms = 1000) {
console.log(`${data} started`);
await bluebird.delay(ms);
console.log(`${data} done`);
return data;
}

const promises = [2, 0, 1, 9].map(item => task(item ,item * 500));

bluebird.some(promises, 3).then((result) => {
console.log(' bluebird 3 promised resolved: ', result);
});

结果:0 1 2 被 resolve 之后,some 调用返回的 Promise 就 resolve 了:

相关文章

  • MySQL 5.7.27 详细下载安装配置教程

    MySQL 5.7.27 详细下载安装配置教程,在安装MySQL的时候会遇到很多问题,博客上有很多解决问题的办法,在这里我附上一些...
  • Linux系统安装教程图文详解

    Linux系统安装教程图文详解,学习Linux首先要有一个安装有Linux系统的电脑,今天华清小编就为大家整理一篇Linux系统安装...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。