我有一个库可以为您做到这一点https://github.com/ForbesLindesay/throat
您可以通过browserify使用它,也可以从brcdn(https://www.brcdn.org/?module=throat&version=latest)下载独立的版本,并将其添加为脚本标记。
然后(假设
Promise构造函数在您的环境中已填充或实现),您可以执行以下 *** 作:
//remove this line if using standalone buildvar throat = require('throat');function limitConcurrency(promiseFactory, limit) { var fn = throat(promiseFactory, limit); return function () { return Q(fn.apply(this, arguments)); }}
您可以直接致电
throat(promiseFactory,limit),但会返回一个承诺承诺而不是Q承诺。
我也非常喜欢将它与array.map一起使用。
// only allow 3 parallel downloadsvar downloadedItems = Q.all(items.map(throat(download, 3)));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)