gpt4 book ai didi

javascript - await 运算符的放置

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:43 25 4
gpt4 key购买 nike

我想知道 JavaScript 中 await 运算符的灵 active 。具体来说,我们如何以及在何处可以在表达式中使用它(在 async 函数中)。

例如

!await Promise.resolve(10);
await !Promise.resolve(10);

以上两个(或两者?)哪个是有效的,哪个更“传统”?表达式的预期返回值为 !10

为了概括,您可以用任何其他类型的表达式/操作代替 !

此外,以下是否有效且适当(就编程实践而言)?

for (const i=0; i < await Promise.resolve(10); i++) {...}

是否有我可以引用的深入官方文档?

最佳答案

for (const i=0; i < Promise.resolve(10); i++)

Promise.resolve(10) 的值是 promise ,不是数字。结果比较i < Promise.resolve(x)永远是错误的,i > Promise.resolve(x) 也是如此。因为您正在与 NaN 进行比较.

// all comparisons with NaN are false
console.log(10 < Promise.resolve(1))
console.log(10 > Promise.resolve(1))
console.log(10 == Promise.resolve(1))
console.log(Promise.resolve(1) == Promise.resolve(1))

您根本无法在异步函数之外以这种方式使用 promise 。您可以这样做(这不是推荐):

async function test(){
for (let i = 0; i < await Promise.resolve(10); i++){
console.log(i)
}
}
test()

同样,!Promise.resolve(10)将得到 not some promise 的结果而不是 not 10 .但是等待结果按预期工作,因为那时你正在比较一个数字。

关于javascript - await 运算符的放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52795446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com