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它不是一个功能,而是一个操作员.