访问等待内联值(JS)?

boo*_*max 3 javascript async-await

首先我写了这样的东西:

(async function() {
    const value = await Promise.resolve({a: 3}).a
    console.log(value)
})().catch(console.error);
Run Code Online (Sandbox Code Playgroud)

但我很快得出的结论是,这不会起作用,因为我们要等待返回的a属性Promise.resolve,这是未定义的.

所以我试着将我的await调用包装成括号:

(async function() {
    const value = await(Promise.resolve({a: 3})).a
    console.log(value)
})().catch(console.error);
Run Code Online (Sandbox Code Playgroud)

哪个也没用.(它记录undefined)

所以似乎提取a道具的唯一方法是做这样的事情:

(async function() {
    const resolvedValue = await Promise.resolve({a: 3});
    let aProp = resolvedValue['a']; 
})().catch(console.error);
Run Code Online (Sandbox Code Playgroud)

,这增加了不必要的代码行.

我喜欢这样的东西打败async/await的目的.这是正确的还是我错过了什么?

Mic*_*ski 10

您需要await在括号中包含关键字和promise,如下所示:

const value = (await Promise.resolve({a: 3})).a;
Run Code Online (Sandbox Code Playgroud)

这样您就等待承诺,然后访问a已解析值的属性.

await(Promise.resolve({a: 3})).a不起作用,因为await它不是一个功能,而是一个操作员.