等待一系列方法来完成node.js

时间:2016-10-05 21:07:49

标签: node.js

我有以下代码,其中str数组将在fetchRows函数中添加json对象。问题是,它是在从fetchrows获取值之前发送str。基本上我希望在发送数组str之前结束四种方法。

var app = express();
app.get('/data', function (req, res) {
    str = [];
    async.waterfall([connect, execute, fetchRows], done );    
    wait.launchFiber(done);
    res.send(str);
    console.log("in done" + str);
    //res.send(str);
});

欣赏任何指示。

1 个答案:

答案 0 :(得分:-1)

注意:我不知道异步

nodejs是一个事件驱动的系统,除了以阻塞方式写入之外,没有任何东西阻止它。上面的代码中发生的是节点引擎到达行

async.waterfall([connect, execute, fetchRows], done ); 

它调用该函数。然后是异步模块,确保在执行函数之前调用connect并完成fetchRows。但是,如果节点立即命中它不会阻塞,它将在以后的某个时间插入要执行的操作,并继续到下面的一行

res.send(str);

所以,显然这将首先完成

简易解决方案

记住我不知道异步

var app = express();
app.get('/data', function (req, res) {
    str = [];
    async.waterfall([connect, execute, fetchRows, finish], done );    

    // I don't know what this line does
    wait.launchFiber(done);

    function finish() {
        res.send(str);
    }

});

这个解决方案的作用是将你的response.send(str)包装成一个函数,并作为fetchRows之后调用的最后一个函数。