0
當await
是一個異步函數裏這樣寫 -JavaScript中的異步等待關鍵字「等待」僅適用於承諾嗎?
let x = await doSomething()
是否doSomething
函數返回一個Promise
?
當await
是一個異步函數裏這樣寫 -JavaScript中的異步等待關鍵字「等待」僅適用於承諾嗎?
let x = await doSomething()
是否doSomething
函數返回一個Promise
?
它可以返回任何東西,因爲
let x = await doSomething()
// ... rest of your code
// is roughly equivalent
Promise
.resolve(doSomething())
.then(value => {
let x = value
// ... rest of your code
})
但如果doSomething
是異步它返回的東西 「thenable」,使await
可能實際工作
const doSomething =() => ({
then(fn) {
setTimeout(fn, 2000, 'hello')
}
})
const run = async() => {
let msg = await doSomething()
console.log(msg)
}
run().then(() => console.log('Done'))
閱讀[文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await)_如果va lue不是一個承諾,它將價值轉化爲已解決的承諾,並等待它._ – Satpal