从Nodejs未定义API请求

时间:2017-12-14 02:26:29

标签: node.js http command-line

我正在处理我的第一个CLI项目,但我无法让它执行API请求。我尝试了fetch,axios,express和几个npm包,但我无法弄清楚错误。该项目将是console.log并从命令行收集用户数据,但不会检索API数据。我此时使用虚假的API数据网址只是为了确保它有效。这是代码:

const axios = require('axios');

let apiResponse;

axios.get('https://jsonplaceholder.typicode.com/posts')
  .then(function(response) {
    apiResponse = response;
    console.log('Does this work?')
  })
  .catch(function (error) {
    console.log(error, 'Error');
  });

console.log('apiResponse: ', apiResponse);

在命令行中我得到了#apiResponse:undefined'当我运行文件。我再次尝试使用几个不同的库,所以我必须做一些根本错误的事情。函数的console.log OUTSIDE打印,但是两个console.logs INSIDE都没有打印。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我在您的控制台中猜到了

undefined
Does this work?

.get方法是异步的,这意味着then之外的任何分配很可能始终是您初始化的方式,在这种情况下没有,或undefined

以下是事情真实发生的高水平:

1) Create undefined var apiResponse
2) axios.get(...)
3) console.log(apiResponse)
4) #2 completes, assigns to `apiResponse`
5) End execution

这里有关于Promises的one of many资源。

将日志语句移到.then()块中。

const axios = require('axios');

let apiResponse;

axios.get('https://jsonplaceholder.typicode.com/posts')
  .then(function(response) {
    apiResponse = response;
    console.log('Does this work?')
    console.log('apiResponse: ', apiResponse);
  })
  .catch(function (error) {
    console.log(error, 'Error');
  });