我有这条路线:
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);
}
问题:在返回之前有没有办法等待函数完成?这个函数不处理promises,所以我不能使用async / await。我找不到任何好的答案,任何等待的事情都要处理promises或setTimeout。这两个都行不通,对吧?
注意:如果我将return语句放在someObj.setData(data);
下的回调中,我会收到如下错误:
在发送标题后无法设置标题
此错误不会出现在初始路由加载中,而是在我再刷新一次之后。
答案 0 :(得分:1)
使用回调。将res.send更改为res.end,以便不设置标头。似乎在我们看不到的函数中写了一些东西。
app.get("/api/current_user", (req, res) => {
//This function takes 3~ seconds to finish
someObj.logOn(data => {
someObj.setData(data);
res.end(JSON.stringify(data));
});
});