function timeout(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
app.use(async (ctx, next) => {
await timeout(1000);
//为什么下面的代码没有执行,前端就得到了返回
ctx.status = 200;
ctx.body = { success: true };
});
代码如上,使用 await timeout(1000)
模拟数据库等异步操作
当有一个请求过来的时候, await timeout之后的代码还没有执行前端就会得到返回404
然后执行 ctx.status = 200;
的时候会报错AssertionError [ERR_ASSERTION]: headers have already been sent
,
把 await timeout去掉之后,前端就能得到正确的返回。
请问这个什么原因?如何解决?
我发现是我自己写的logger里面没有用await