【发布时间】:2018-01-25 13:07:13
【问题描述】:
我有这条路线:
app.get("/api/current_user", (req, res) => {
//This function takes 3~ seconds to finish
someObj.logOn(data => {
someObj.setData(data);
});
//This will return before function finishes
return res.send(someObj.data);
});
这里是 .logOn() 函数(简化):
logOn(_callback) {
//has some data
var info = {};
//returns data in callback
_callback(info);
}
问题:有什么方法可以等待函数完成后再返回?这个函数不处理promise,所以我不能使用async/await。我找不到任何好的答案,任何需要等待的东西都必须处理 promises 或 setTimeout。这两个都行不通,对吧?
注意:如果我将 return 语句放在回调中 someObj.setData(data); 的正下方,我会收到如下错误:
发送后无法设置标头
这个错误不是在最初的路由加载时发生的,而是在我再刷新一次之后发生的。
【问题讨论】:
-
可以立即返回,但在异步回调中发送数据。
标签: javascript node.js express