Javascript 如何处理并发性以同时运行2或3个承诺?

Javascript 如何处理并发性以同时运行2或3个承诺?,javascript,promise,bluebird,Javascript,Promise,Bluebird,根据研究,蓝鸟的用法似乎很简单。 我是这样理解的: Promise.map( Iterable<any>|Promise<Iterable<any>> input, function(any item, int index, int length) mapper, [Object {concurrency: int=Infinity} options] ) -> Promise 我已经试了好几个小时,但没有成功。每次运行时,所有

根据研究,蓝鸟的用法似乎很简单。 我是这样理解的:

Promise.map(
    Iterable<any>|Promise<Iterable<any>> input,
    function(any item, int index, int length) mapper,
    [Object {concurrency: int=Infinity} options]
) -> Promise

我已经试了好几个小时,但没有成功。每次运行时,所有进程都会同时启动。如何处理并发性以同时运行2或3个承诺?你能解释一下我在这里误解了什么吗?

你对Promise.map()的参数有一个基本的误解。它需要一个标准函数,然后它将异步返回

let Promise = require('bluebird');

var promisfunc =  function func(element, index, length) {
    console.log(element);
    return element;
}

Promise.map([1, 2, 3, 4, 5, 6, 7, 8, 9], promisfunc)
.then( (data) => console.log(data) )
.catch( (err) => console.log(err) );

我所做的最重要的事情就是去掉了
var promisfunc=Promise.promisify(函数)
,因为这不是
Promise.map()
所期望的。它被一个bog标准函数所取代,该函数在记录元素后返回元素,就像标准映射函数一样。

这是一个有效的查找,但它可以只并行运行2个承诺,并且只有在运行的承诺少于2个时才启动新进程?
Promise.map(数据,映射器,{concurrency:2})
设置将最大并发线程数限制为2的选项。
let Promise = require('bluebird');

var promisfunc =  function func(element, index, length) {
    console.log(element);
    return element;
}

Promise.map([1, 2, 3, 4, 5, 6, 7, 8, 9], promisfunc)
.then( (data) => console.log(data) )
.catch( (err) => console.log(err) );