gpt4 book ai didi

javascript - 如何与 async.js 并行执行函数?

转载 作者:行者123 更新时间:2023-11-28 15:47:35 24 4
gpt4 key购买 nike

在下面的代码中,我有Array.forEach,它按顺序执行doSomething同步函数:

items.forEach(function(item) {
doSomething(item);
});

我需要并行执行函数 (doSomething),使用 async.js 并尝试以下操作:

async.each(items, function (item, doneCallback) {
var startDate = new Date();
console.log(item.name().toString() + ' startDate: ' + startDate.toString() + ' - ' + startDate.getMilliseconds().toString());
doSomething(item); //Lazy function for many operations.
var endDate = new Date();
console.log(item.name().toString() + ' endDate' + endDate.toString() + ' - ' + endDate.getMilliseconds().toString());

return doneCallback(null);

}, function (err) {
otherFunction();
console.log('Finished');
});

但是函数doSomething是按顺序执行的。

我尝试过使用async.parallel,但是函数doSomething再次按顺序执行:

items.forEach(function (item) {
var func = function (doneCallback) {
var startDate = new Date();
console.log(item.name().toString() + ' startDate: ' + startDate.toString() + ' - ' + startDate.getMilliseconds().toString());

doSomething(item); //Lazy function for many operations.

var endDate = new Date();
console.log(item.name().toString() + ' endDate' + endDate.toString() + ' - ' + endDate.getMilliseconds().toString());

return doneCallback(null);
};
functions.push(func);
});

async.parallel(functions, function (err, results) {
otherFunction();
console.log('Finished');
});

如何与async.js并行执行doSomething同步函数?

请帮助我。

最佳答案

How to execute doSomething synchronous function in parallel with async.js?

你不能。 async.js 仅用于异步任务,因此得名(另请参阅 this answer 关于同步行为)。此外,JavaScript 由于其事件化、单线程范例而无法并行执行代码。它只能并行“等待”下一个事件。

如果您确实在同步执行方面遇到问题,请尝试将数组分成较小的 block ,并通过超时延迟它们以实现非阻塞行为(请参阅 JavaScript Performance Long Running TasksHow to stop intense Javascript loop from freezing the browserHow to make non-blocking javascript code?Best way to iterate over an array without blocking the UI ),或者考虑使用 WebWorkers 进行真正繁重的计算。然后,您可以使用 async.js 来管理这些。

关于javascript - 如何与 async.js 并行执行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21744724/

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