重任务不阻塞nodejs

Heavy task not blocking nodejs

我必须循环一个数组,并在几个函数中为每个元素计算一个非常繁重的任务,但我需要在 return 回调之前完成整个数组。问题是节点没有阻塞在那里,就像对待异步代码块一样,因为在它完成之前,回调是 returned。我错过了什么?

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;
}

callback(result) 被立即调用,我需要它被阻止以便处理数组。这已经转移到子进程,所以它假装那样工作。

'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