关于JavaScript的原生Array.forEach
实现,我有一个问题:它的行为是异步的吗?例如,如果我调用:
[many many elements].forEach(function () {lots of work to do})
这是否是非阻塞的?
发布于 2012-02-27 11:00:08
如果你需要一个异步友好的Array.forEach
或类似的版本,可以在Node.js 'async‘模块中找到:http://github.com/caolan/async ...as这个模块也可以在浏览器中使用。
async.each(openFiles, saveFile, function(err){
// if any of the saves produced an error, err would equal that error
});
发布于 2011-02-25 08:01:03
Array.forEach
是为无需等待的计算而设计的,在事件循环中进行异步计算没有任何好处(如果您需要多核计算,webworkers会添加多处理)。如果您希望等待多个任务结束,请使用计数器,您可以将其包装在信号量类中。
发布于 2014-06-22 04:18:28
这是一个简短的异步函数,无需第三方库即可使用
Array.prototype.each = function (iterator, callback) {
var iterate = function () {
pointer++;
if (pointer >= this.length) {
callback();
return;
}
iterator.call(iterator, this[pointer], iterate, pointer);
}.bind(this),
pointer = -1;
iterate(this);
};
https://stackoverflow.com/questions/5050265
复制相似问题