{ //This function takes 3~ seconds to fini-6ren">
gpt4 book ai didi

javascript - 如何等待快速 route 的功能完成

转载 作者:行者123 更新时间:2023-11-30 21:15:26 25 4
gpt4 key购买 nike

我有这条路线:

   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。我找不到任何好的答案,等待的任何事情都必须处理 promise 或 setTimeout。两者都行不通,对吧?

注意:如果我将 return 语句放在 someObj.setData(data); 下的回调中,我将收到如下错误:

can't set headers after they are sent

这个错误不是在初始路由加载时出现的,而是在我再次刷新后出现的。

最佳答案

使用回调。将 res.send 更改为 res.end 以便不设置 header 。似乎在我们看不到的函数中向响应写入了一些东西。

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

关于javascript - 如何等待快速 route 的功能完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45729652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com