Javascript 如何在返回值之前完全解析axios/fetch call/promise?
我有一个函数Javascript 如何在返回值之前完全解析axios/fetch call/promise?,javascript,fetch,axios,es6-promise,Javascript,Fetch,Axios,Es6 Promise,我有一个函数 function getData(foo) { return axios.get(url+foo) .then(response => response.baz) .catch(error => console.log(error)) } 在我代码的其他地方我称之为 function baz() { //.... document.getElementById('bar').textContent = getData() //.... } 但随后
function getData(foo) {
return axios.get(url+foo)
.then(response => response.baz)
.catch(error => console.log(error))
}
在我代码的其他地方我称之为
function baz() {
//....
document.getElementById('bar').textContent = getData()
//....
}
但随后,我的元素中出现了[objectpromise]
的文本
为什么会发生这种情况?如何确保在不使用async/await的情况下只插入真值 您的getData()
函数返回一个承诺。因此,在调用getData()
时,您需要使用wait
或.then
链。如果可以,我建议您使用wait
。如果您执行以下操作,请确保将您的baz
声明为async
:
async function baz() {
//....
document.getElementById('bar').textContent = await getData();
//....
}
如果您不想使用等待
,请拨打,然后像这样
:
function baz() {
//....
getData().then(data => {
document.getElementById('bar').textContent = data;
}
//....
}
“为什么会发生这种情况”-因为您正在从
getData()
返回一个承诺。“如何确保只插入真实值?”-如果不想使用异步/等待,请使用。然后(…)
和回调。您无法立即从未来访问该值。那么,我是否正确地假设我不需要getData()
函数中的then()
?如果我像你建议的那样只使用then()
,这似乎有些过时。我的意思是,如果我像getData().then()
那样使用then()
,我还需要baz()
中的then()
?正确,需要确保数据转换在getData()中处理。then()。