的NodeJS - 异步/等待内部控制器
我有这个简单的例子,我的控制器和预期的NodeJS - 异步/等待内部控制器
export let create = async (req: Request, res: Response) => { console.log("START");
await setTimeout(() => {
console.log("MIDDLE");
}, 1000);
console.log("END");
return res.json({ data: null });
};
输出不起作用:开始,结束,MIDDLE
的处置:开始,中间,结束
回答:
尝试:
await new Promise(resolve => setTimeout(resolve, 1000))
回答:
您使用setTimeOut
而不创建承诺对象,因此它正在等待setTimeOut
值被返回(这是即时的),而不是等待承诺解决方案。这就是您的陈述不按照预期的方式工作的原因。你需要的是建立一个承诺:
function resolveAfterOneSecond(x) { return new Promise(resolve => {
setTimeout(() => {
console.log("Middle");
resolve(x);
}, 1000);
});
}
async function f1() {
var x = await resolveAfterOneSecond(10);
console.log("End");
}
console.log("Begin");
f1();
,然后设置你的函数,以等待承诺的回报,而不是setTimeout函数整数的回报。
以上是 的NodeJS - 异步/等待内部控制器 的全部内容, 来源链接: utcz.com/qa/265688.html