async / await:无法直接访问函数的数组值

时间:2017-12-05 17:30:43

标签: javascript async-await

这有效:

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语法以使其有效?

2 个答案:

答案 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];