Javascript在三元运算符中使用单个等待

Max*_*888 9 javascript conditional-operator async-await es6-promise

我有一种情况,我想在三元运算符中使用 await。我想根据条件将值设置为字面值或承诺的解析值。希望下面的代码能帮助描述我想要做什么,但我很确定它不正确,所以考虑它是伪代码。

const val = checkCondition ? "literal value" : await promiseGetValue();
Run Code Online (Sandbox Code Playgroud)

其中 promiseGetValue() 返回一个解析为文字值的承诺。这样做的正确方法是什么?

FZs*_*FZs 7

条件运算符需要表达式作为操作数,并且await value是有效的表达式。

因此,如果在异步函数内部或支持顶层的模块的顶层await(其中await有效)使用,您的代码是完全有效的。

对此我不能再说什么。


eha*_*hab 6

这实际上是一个有效的语法,只是为了清楚起见,您可以用括号将 await promiseGetValue() 括起来。这是此语法的演示。

const returnPromise = () => Promise.resolve('world')
const f = async () => {
   const x = true ? 'hello' : await returnPromise()
    const y = false ? 'hello' : await returnPromise()
    console.log(x,y)

}
f()
Run Code Online (Sandbox Code Playgroud)