我尝试在我的 Node.js 项目中使用 async 执行一系列事件。如下:
server.js:
var express = require('express');
var async = require('async');
...
app.get('/my_page', function (req, res) {
async.series([
function() { console.log("calling foo()"); },
function() { foo(); },
function() { console.log("foo() done"); },
]);
res.render('my_page', {});
}
但我只得到第一个控制台输出,并且它被卡住了。function()
之前是function(callback)
。我认为它正在等待返回一个值,但删除它们并不会改变情况..
我做错了什么? (我是 Node.js 的新手)
感谢您的帮助,
最佳答案
请阅读文档。每个函数应该得到 callback
作为参数,应该调用callback
一旦完成,就告诉async
是时候转到下一个函数了。所以你应该有这样的东西:
function(callback) {
console.log("calling foo()");
callback();
},
如果其中一个函数出现错误,请调用 callback
将错误作为第一个参数。如果你想要res.render('my_page', {});
仅在执行最后一个函数后执行,将其包装在函数中并将其作为 async.series
的第二个参数.
当然,如果没有一个函数是异步的,您应该考虑不使用 async
.
关于javascript - 第一个函数卡在 async.js 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41021541/