gpt4 book ai didi

javascript - 如何知道异步 for 循环何时完成?

转载 作者:搜寻专家 更新时间:2023-11-01 05:10:45 25 4
gpt4 key购买 nike

我有一个 for 循环可以启动数百个异步函数。完成所有功能后,我需要运行最后一个功能,但我似乎无法全神贯注地知道所有功能何时完成。

我已经尝试过 promises,但是一旦循环中的任何函数解析,我的 promise 函数就会完成。

for(var i = 0; i < someArray.length; i ++){
// these can take up to two seconds and have hundreds in the array
asyncFunction(someArray[i];
}

我如何知道每个功能都已完成?

最佳答案

增量

您可以添加一个递增的回调:

for (var i = 0; i < len; i++) {
asycFunction(someArray[i]);
asycFunction.done = function () {
if (i == someArray.length - 1) {
// Done with all stuff
}
};
}

递归方法

这种方法更受一些开发人员的喜欢,但(可能)需要更长的时间来执行,因为它会等待一个完成,然后运行另一个。

var limit = someArray.length, i = 0;

function do(i) {
asyncFunction(someArray[i]);
asyncFunction.done = function () [
if (i++ == someArray[i]) {
// All done!
} else { do(i); }
}
}
do(i++);

promise

Promises 目前没有得到很好的支持,但您可以使用库。不过,它肯定会给您的页面增加一点体积。


一个不错的解决方案

(function (f,i) {
do(i++,f)
}(function (f,i) {
asyncFunction(someArray[i]);
asyncFunction.done = function () {
if (i++ === someArray.length - 1) {
// Done
} else { f(i) }
};
}, 0)

关于javascript - 如何知道异步 for 循环何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com