【发布时间】:2020-06-11 16:56:01
【问题描述】:
我有以下代码。 performAsyncAction 执行异步操作并返回 Promise<Response>。在 someFunction 中,我很惊讶 TypeScript 没有警告 not 在返回承诺的函数上使用 await。
function performAsyncAction() {
return fetch('someservice');
}
function someFunction() {
const result = performAsyncAction(); // Was expecting typescript to give error here
}
我找到了一个相关的 linting 规则,可能对 promise-function-async 有所帮助
【问题讨论】:
-
没有错误,
result是一个 Promise,那里没有 await -
为什么要这样?例如,存储 promise 以与
Promise.all()并行运行它们是一个完全有效的用例。 TS 无法预测您为什么要存储承诺而不是等待它 -
但是,如果 typesctipt / linter 会强制您将所有返回 Promise 的东西都输入到
await,您如何将 Promise 放入您传递给Promise.all()的数组中? -
也许思考这个问题的方式是 typescript 是关于语法的,而 awaiting a promise 是关于语义的。是否阻止执行结果是一个设计问题。
-
我猜 Klaycon 和 Thomas 假设 OP 认为所有返回 Promise 的东西都会神奇地被等待和打开?那么
await关键字是干什么用的呢?我不明白这个问题有什么意义
标签: javascript typescript async-await es6-promise