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上遇到了问题。