Nodejs请求处理程序不等待函数返回

时间:2014-09-22 02:03:33

标签: node.js

我有一个特定路由的请求处理程序,它执行以下操作:

function doThing(req, res) {
    res.json({ "thing" : "thing", "otherThing": externalModule.someFunction("yay"); });
}

似乎结果是在“someFunction”调用完成之前发送,因此“otherThing”JSON始终不存在。如何在发送响应之前等待该函数返回数据?

1 个答案:

答案 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 });
  });
}