如何在回调结束时获得通知承诺所有回调样式[重复]
Posted
技术标签:
【中文标题】如何在回调结束时获得通知承诺所有回调样式[重复]【英文标题】:how to get notified at the end of callbacks Promise all callback style [duplicate] 【发布时间】:2019-11-19 08:31:39 【问题描述】:我有一个接受回调的异步函数
function doAsync(delay, cb)
setTimeout(() =>
console.log('async ', delay);
cb();
, delay);
我想多次调用这个函数,并在所有回调完成时收到通知。
// I have to call `doAsync` for each element of this array
var a = [100,300,200,400];
a.forEach(_ => doAsync(_, () => ));
function onEnd()
console.log('all done');
// expected output
//
// async 100
// async 200
// async 300
// async 400
// all done
【问题讨论】:
a) 切换到 Promise,它们好多了! b) 使用async.js
库,它具有异步迭代的辅助函数
【参考方案1】:
您需要通过并检查最后一个index
与array's length
。我已在您的代码中添加了该实现。
希望对您有所帮助!
function doAsync(delay, cb, key)
if ((key + 1) == a.length)
onEnd();
setTimeout(() =>
console.log('async ', delay);
cb();
, delay);
// I have to call `doAsync` for each element of this array
var a = [100,200,400,300];
a.forEach(function(_,k)doAsync(_, () => ,k));
function onEnd()
console.log('all done');
【讨论】:
如果最后一项不是最长的就不行,比如var a = [300, 200, 100];
你检查了吗?它对我来说很好......以上是关于如何在回调结束时获得通知承诺所有回调样式[重复]的主要内容,如果未能解决你的问题,请参考以下文章