我用 Chrome 控制台尝试了这个:
const foo = async () => 1;
const bar = async () => 2;
(await 1) ? foo() : bar();
结果是1。
您能解释一下吗?它不是应该返回一个 Promise 吗?
最佳答案
await
通过调用 Promise.resolve(operand)
将非 Promise 操作数强制为 Promise。所以
(await 1)
变成
(await Promise.resolve(1))
和 Promise.resolve(1)
返回一个值为 1 的 promise 。
await 返回后(异步 - 在 promise 作业队列*中执行作业后),三元表达式的计算结果为
1 ? foo() : bar() // calls foo()
await
运算符的优先级似乎与其他一元运算符的优先级相同。
*注意 await
永远不会在事件循环的同一个调用中继续执行,即使它正在等待的 Promise 已经实现:它总是在事件循环的另一个调用中返回。
关于javascript - wait 和三元运算符之间的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48088381/