异步/等待功能不会等待console.log它的响应

时间:2018-11-14 22:17:05

标签: javascript node.js asynchronous async-await axios

我正在尝试制作一个异步函数并将其响应保存到变量中,然后console.log该变量,但它是console.log在异步函数完成之前记录响应。

import axios from 'axios';

async function getItems() {
  const response = await axios.get(SOME_URL);
  console.log('done', response);
  return response;
}

const items = getItems();
console.log('items: ', items);

我希望日志看起来像这样:

// Expected result
done: {...result...}
items: {...items...}

但是我实际上得到的是:

// ACTUAL result
items: Promise {<pending>}
done: {...result...}

我想等到请求完成后,再继续对getItems的呼叫。

我想念什么?

1 个答案:

答案 0 :(得分:3)

由于“ getItems”是异步调用,因此您将在“ .then”中获得如下结果

import axios from 'axios';

async function getItems() {
  const response = await axios.get(SOME_URL);
  console.log('done', response);
  return response;
}

getItems().then(items => console.log('items: ', items))