【发布时间】:2021-04-26 20:52:28
【问题描述】:
TypeScript 允许指定函数的返回类型:
function delay(ms: number): Promise<void> {
return new Promise( resolve => setTimeout(resolve, ms) )
}
我经常忘记等待返回 Promise 的函数:
let waited = 0
while (accessible === false && waited < MAX_DELAY) {
waited += DELAY_MS
delay(DELAY_MS) // oh no, this won't work correctly
accessible = await this.dbAccessible()
}
TypeScript (tsserver) 会在我等待一个 不是承诺的表达式时警告我
'await' 对这个表达式的类型没有影响
如果我未能等待 是 一个承诺的表达式,我可以让tsserver(或其他东西,如 linter)警告我吗?我知道这有时是有效的(并且我已经使用过),但在我的经验中,这比忘记等待我打算等待的承诺要少见。
【问题讨论】:
标签: typescript promise async-await