这有效:
var getArray = function(id) {
return [1, 2];
}
console.log(getArray()[0]); // returns 1
这不起作用:
var getArray = async function(id) {
return [1, 2];
}
console.log(await getArray()[0]); // syntax error
为什么呢?如何更改async
/ await
语法以使其有效?
答案 0 :(得分:1)
您可以在另一个await
函数中使用async
关键字,通过 - (await getArray())[0]
获得所需的结果。
如果您使用async
函数不在另一个async
函数中,则必须像调用then
的简单Promise函数一样使用它。
var getArray = async function(id) {
return [1,2];
}
getArray().then(res => console.log(res[0])).catch(err => {/* ... */});

如果你想使用await
,你需要另一个包装async
函数,它将在那里执行逻辑并将被调用。您也可以在函数中使用try/catch
var getArray = async function(id) {
return [1,2];
}
async function printFirst() {
try {
const first = (await getArray())[0];
console.log(first);
} catch(e) {
}
}
printFirst();

答案 1 :(得分:0)
我找到了解决方案,这很简单。 只需在等待部分上加上括号即可。
var first = (await getArray())[0];