【发布时间】:2021-01-27 02:27:38
【问题描述】:
考虑以下 sn-p:
try {
const client = getClientThatMustBeClosed();
const data = await shortRunningOperation(client);
return Promise.resolve(data);
} catch (error) {
return Promise.reject(error);
} finally {
// any exception in the following function is caught and dealt with internally...
await longRunningOperation(client);
client.close();
}
理想情况下,我想在shortRunningOperation() 完成后立即将数据返回给调用函数,而不是等待longRunningOperation() 完成。但是关闭client 必须等到longRunningOperation() 完成之后。
这个jsfiddle 建议return 语句等待finally 块完成......在这种情况下,在不等待longRunningOperation() 完成的情况下尽快将数据返回到调用函数的正确方法是什么?
【问题讨论】:
-
return Promise.resolve(data)太过分了。只需return data和return error。但是一旦你使用return,函数执行就结束了。我认为await longRunningOperation不会发生。 -
似乎很容易尝试和查看。使用
setTimeout和console.logs 设置一些async函数,看看会发生什么。