Javascript 如何与async.js并行执行函数?
在下面的代码中,我有Javascript 如何与async.js并行执行函数?,javascript,async.js,Javascript,Async.js,在下面的代码中,我有数组。forEach,它按顺序执行doSomething同步函数: items.forEach(function(item) { doSomething(item); }); 我需要并行执行函数(doSomething),使用async.js并尝试以下操作: async.each(items, function (item, doneCallback) { var startDate = new Date();
数组。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
同步函数
请帮帮我
如何与async.js并行执行doSomething同步函数
你不能async.js
仅用于异步任务,因此得名(另请参见同步行为)。此外,JavaScript无法并行执行代码,因为它采用了事件、单线程范式;它只能并行地“等待”下一个事件
如果你的同步执行真的有问题,试着将数组拆分成更小的块,并用超时来阻止非阻塞行为(参见,),或者考虑WebWork的计算。然后,您可以使用async.js来管理这些
如何与async.js并行执行doSomething同步函数 你不能async.js
仅用于异步任务,因此得名(另请参见同步行为)。此外,JavaScript无法并行执行代码,因为它采用了事件、单线程范式;它只能并行地“等待”下一个事件
如果你的同步执行真的有问题,试着将数组拆分成更小的块,并用超时来阻止非阻塞行为(参见,),或者考虑WebWork的计算。您可以使用async.js来管理这些,然后。
如果可以将doSomething重构为异步函数,则可以使用该函数开始运行这两个函数,并等待直到它们都调用它们的回调。如果可以将doSomething重构为异步函数,则可以使用该函数开始运行这两个函数,并等待它们都调用它们的回调回调。您只能按顺序运行这些函数(可能这就是您所需要的),对于此use函数,而不是每个
。以下是每个系列的简短文档:
与每个相同,只有迭代器应用于
串联的数组。下一个迭代器只调用当前迭代器一次
已完成处理。这意味着迭代器函数将
按顺序完成
表达式并行的同步函数实际上没有意义。并行意味着异步执行。您只能按顺序运行这些函数(可能这就是您所需要的),对于此函数,请使用
而不是每个
。以下是每个系列的简短文档
:
与每个相同,只有迭代器应用于
串联的数组。下一个迭代器只调用当前迭代器一次
已完成处理。这意味着迭代器函数将
按顺序完成
表达式并行的同步函数实际上没有意义。并行意味着异步执行。不幸的是,Javascript是一种单线程语言。然而,HTML5的目标是通过添加新的线程来改善这一点,这允许生成真正的操作系统级线程。如果你能够利用HTML5,那么这可能对你有用。您可以为每个项目生成一个Web Worker,然后等待所有线程完成(加入)。不幸的是,Javascript是一种单线程语言。然而,HTML5的目标是通过添加新的线程来改善这一点,这允许生成真正的操作系统级线程。如果你能够利用HTML5,那么这可能对你有用。您可以为每个项目生成一个Web Worker,然后等待所有线程完成(加入)。感谢提供信息,稍后我尝试使用parallel.js,但在IE上遇到了问题。感谢提供信息,稍后我尝试使用parallel.js,但在IE上遇到了问题。