[英]Callback function returning promise instead of the value
我正在使用 fetch 从 json 文件中获取数据。 在 a.then() 中,我调用回调来处理该数据,然后最终从回调中返回最终值。 问题是,当我返回时,它返回 promise 而不是最终值。 我查看了其他类似的问题,并认为我已经理解了异步概念,但我仍然坚持这一点。 有什么我想念的吗?
const func = (callback) => {
fetch('https://asdf.json')
.then(response => {
return response.json();
})
.then(data => {
return callback(data)
}
}
const callBack = (parsedData) => {
//do something to get finalValue
return finalValue
}
func(callBack);
我应该补充一点,我尝试只调用callback(data)
而不返回,但这只是返回未定义。
fetch 方法返回一个 promise,因此您必须使用 async/await 或 then() 才能使其正常工作。 例如:
const func = (callback) => {
return fetch('asdf.json')
.then(response => {
return response.json();
})
.then(data => {
return callback(data)
})
}
const callBack = (parsedData) => {
//do something to get finalValue
return parsedData;
}
const main = async () => {
console.log(await func(callBack));
}
main();
使用 then():
const func = (callback) => {
return fetch('asdf.json')
.then(response => {
return response.json();
})
.then(data => {
return callback(data)
})
}
const callBack = (parsedData) => {
//do something to get finalValue
return parsedData;
}
func(callBack).then(response=> {
console.log(response);
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.