我必须循环一个数组,并在几个函数中计算每个元素一个非常繁重的任务,但我需要在返回回调之前完成整个数组。问题是,节点没有阻塞,就像处理这个代码块一样异步,因为在它完成之前,返回了回调。我错过了什么?
function one(data, callback){
for(var i=0; i < data.length; i++){
result = two(data[i]);
}
callback(result)
}
function two(data){
//process
return three(data);
}
function three(data){
//heavy task
return data;
}
立即调用回调(result),我需要阻止它才能处理数组。这已经转移到了子进程,因此它假装以这种方式工作。
答案 0 :(得分:0)
'use strict';
function makePromise(data) {
return Promise(resolve, reject) {
//here handle data
if ( // success ) {
resolve(result);
} else {
reject(error);
}
};
}
data.map((element) => makePromise(element))
.all(restuts => {
//here results is a array
})
.catch(error => {
console.log(error);
})
您可以在ES6中使用Promise
。