我正在处理我的第一个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都没有打印。任何帮助将不胜感激!
答案 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');
});