Javascript 为什么axios回报的是承诺而不是价值?
我试图从另一个文件postData.js中存储的函数中的axios get请求中获取值Javascript 为什么axios回报的是承诺而不是价值?,javascript,axios,es6-promise,Javascript,Axios,Es6 Promise,我试图从另一个文件postData.js中存储的函数中的axios get请求中获取值 const BaseURL = 'http://127.0.0.1:8000/api/'; export const getData = (location) => { return axios.get(`${BaseURL}${location}`).then(res => res.data) .then((data) => { return data; }) }
const BaseURL = 'http://127.0.0.1:8000/api/';
export const getData = (location) => {
return axios.get(`${BaseURL}${location}`).then(res => res.data)
.then((data) => {
return data;
})
}
从console.log(getData('menu/')中,在其他文件的组件中,我希望从axios获得值,而不是获得承诺对象。axios确实返回承诺对象,以处理外部API调用的异步性-->您无法预测发出请求所需的确切时间,因为这取决于外部因素。因此,您可以使用
async
/wait
和。然后
处理它的返回。根据AXIOS的git repo-浏览器和node.js基于Promise的HTTP客户端的承诺,因此它正在返回一个承诺
因为axios以更简单的方式从浏览器实现XMLHttpRequests,XMLHttpRequests本质上应该是异步的。因此,承诺是处理这些情况的最佳方式。
因为承诺是异步的。当您记录日志时,您对函数执行同步操作,因此您得到函数返回的内容,这是一个承诺。这个承诺可能最终会解析为数据,但它被封装到这个异步对象中。@pukar17您能在postData.js中发布函数吗?因为网络请求是自然异步的。Axios返回承诺,因为这是表示“当前未解决的问题,但无论成功与否,最终都会解决”的最佳方式。
。然后,
始终返回承诺。不能让异步进程(网络请求)同步返回值。