Tom*_*llo 4 javascript node.js express async-await
我有一个通过 url 参数收集信息的节点/快速路由。我使用这些参数来启动一个单独的函数,该函数需要几秒钟的时间。我正在尝试 async/await 等待函数返回数据,但路由逻辑只是向前推进,而不是等待任何东西。
这是语法/结构问题吗?欢迎任何提示,因为我似乎碰壁了。谢谢!
app.get('/testlogin', (req, res) => {
(async () => {
// This needs to wait until loginToApp returns data but it does not
await loginToApp(req.query.u, req.query.p)
.then((data) => {
console.log('from testlogin route. This should print after loginToApp');
console.log(data); // the returned data
});
})();
});
async function loginToApp(user, pwd) {
(async () => {
setTimeout(() => {
const data = { temp: 1, rtemp: 2 };
console.log('from loginToApp');
console.log(data);
return data;
}, 2000);
})();
}
Run Code Online (Sandbox Code Playgroud)
您的loginToApp函数需要返回 aPromise给您await。如果使用 a setTimeout,那么您必须将其显式包装在一个新的 Promise 中。
app.get('/testlogin', async (req, res) => {
const data = await loginToApp(req.query.u, req.query.p);
console.log(data);
});
async function loginToApp(user, pwd) {
return new Promise(res => {
setTimeout(() => {
const data = { temp: 1, rtemp: 2 };
console.log('from loginToApp');
console.log(data);
res(data);
}, 2000);
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4300 次 |
| 最近记录: |