的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

回到顶部