我有一个特定路由的请求处理程序,它执行以下操作:
function doThing(req, res) {
res.json({ "thing" : "thing", "otherThing": externalModule.someFunction("yay"); });
}
似乎结果是在“someFunction”调用完成之前发送,因此“otherThing”JSON始终不存在。如何在发送响应之前等待该函数返回数据?
答案 0 :(得分:1)
使用回调。例如:
externalModule.someFunction = function(str, cb) {
// your logic here ...
// ... then execute the callback when you're finally done,
// with error argument first if applicable
cb(null, str + str);
};
// ...
function doThing(req, res, next) {
externalModule.someFunction("yay", function(err, result) {
if (err) return next(err);
res.json({ "thing" : "thing", "otherThing": result });
});
}