gpt4 book ai didi

javascript - 遍历数组在每个元素上运行异步任务

转载 作者:行者123 更新时间:2023-11-30 08:02:18 25 4
gpt4 key购买 nike

我有一个项目列表,我想对每个项目运行一个异步任务。

我想同步,以便在前一个元素完成后处理每个元素。到目前为止我尝试过的是:

function processItems(items) {
var i = 0;
while(i < items.length) {
asyncFunc(items[i], function() { i++ }); // asyncFunc takes a callback parameter
}
}

然而,这将永远循环(我相信 i 超出了回调函数的范围)。

是否有更好的方法来实现这一点?

最佳答案

我认为以下内容可以满足您的需求:

function processItems(items) {
var i = 0,
length = items.length,
fn = function() {
if(i < length) {
asyncFunc(items[i], fn);
i++;
}
};

fn();
}

fn 是一个函数,只要索引小于长度,它就会将回调设置为等于自身。然后我调用一次 fn 来启动它。这是一个 fiddle :

http://jsfiddle.net/8A8CG/


或者,如果 asyncFunc 返回 promise , 你可以使用 Array#reduce处理一系列项目:

function processItems(items) {
return items.reduce((promise, item) => {
return promise.then(() => asyncFunc(item));
}, Promise.resolve());
}

关于javascript - 遍历数组在每个元素上运行异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924038/

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