Node.js Typescript异步等待不工作
我在Typescript中有下面的异步函数,而wait似乎并没有像我期望的那样阻塞并产生所需的结果Node.js Typescript异步等待不工作,node.js,typescript,async-await,Node.js,Typescript,Async Await,我在Typescript中有下面的异步函数,而wait似乎并没有像我期望的那样阻塞并产生所需的结果 async function getCroppedImgContent(origImgBuffer: Buffer) { console.log("Inside setCroppedImgContent"); let croppedBuffer = await sharp(origImgBuffer) .resize(4000, 4000) .max() .toB
async function getCroppedImgContent(origImgBuffer: Buffer) {
console.log("Inside setCroppedImgContent");
let croppedBuffer = await sharp(origImgBuffer)
.resize(4000, 4000)
.max()
.toBuffer();
console.log("After crop");
return croppedBuffer;
}
“裁剪后”不是在“内部设置裁剪内容”之后立即打印,而是要晚很多。看起来等待不起作用。Nenad,在函数中使用
wait
并不意味着它将同步执行<代码>等待只会阻止单个调用的执行
如果需要console.log(“setcropedimgcontent之后”)代码>在getCroppedImgContent
完成后执行。您需要等待它的调用:
await getCroppedImgContent(origContent)
.then(function (croppedBuffer) {
image.content = croppedBuffer;
console.log("Set image content");
});
Nenad,在函数中使用wait
并不意味着它将同步执行<代码>等待
只会阻止单个调用的执行
如果需要console.log(“setcropedimgcontent之后”)代码>在getCroppedImgContent
完成后执行。您需要等待它的调用:
await getCroppedImgContent(origContent)
.then(function (croppedBuffer) {
image.content = croppedBuffer;
console.log("Set image content");
});
有什么问题吗?sharp()。我已经在调试器中检查过它。@jfriend00是的,它是:有什么问题吗?sharp().resize().max().toBuffer()
是否返回承诺,因为wait
只有在等待承诺时才真正有用。在等待行中不会阻止执行,稍后返回结果是的,它返回承诺。我已在调试器中对其进行了检查。@jfriend00是的,确实如此:但在这种情况下,应将此代码添加到新函数中,并用async
关键字进行标记。那么“裁剪后”怎么办?是否应在“Inside setCroppedImgContent”之后打印?在我的情况下不是,这是我最大的问题。由于注释,我添加了调用代码,但这是无关的。现在你完全改变了你的描述,而且看起来我会考虑正确的行为。“后茬”不立即打印,因为执行被阻塞,等待完成的承诺。但是在这种情况下,这个代码应该被添加到一个新的函数中,并用async
关键字标记。那么“裁剪后”怎么办?它不应该打印在“内部设置裁剪内容”之后吗?在我的情况下不是,这是我最大的问题。由于注释,我添加了调用代码,但这是无关的。现在,您完全更改了您的描述,并且它似乎是我认为正确的行为。“后茬”不立即打印,因为执行被阻塞,等待完成的承诺。