我有以下代码:
function getApiData(){
return fetch('api/abcd').then(data => data.json()).then(apiResponse => {
let data = [ ['User Type', 'Number of Users'], ['User1', apiResponse.nrOfUser1], ['User2', apiResponse.nrOfUser2]]
return data;
});
}
我正在尝试获取函数外部另一个变量中的数据值,但它给我未定义的信息。
let result = getApiData()
如何从提取请求中获取数据?如果我返回获取请求,则会得到一个Promise对象。我如何获得承诺值?
答案 0 :(得分:-1)
您必须修改函数才能接收回调
function getApiData(cb){
fetch('api/abcd').then(data => data.json()).then(apiResponse => {
let data = [ ['User Type', 'Number of Users'], ['User1', apiResponse.nrOfUser1], ['User2', apiResponse.nrOfUser2]]
cb(data);
});
}
然后要获得结果,您必须传递一个函数作为参数。
getApiData(data => {
console.log(data);
})
您可以ES8异步等待以避免回调
async function getApiData(){
let data = await fetch('api/abcd')
let jsonData = await data.json()
return new Promise((resolve, reject) => {
let result = [ ['User Type', 'Number of Users'], ['User1', jsonData.nrOfUser1], ['User2', jsonData.nrOfUser2]]
resolve(result)
})
}
并获得结果
let data = await getApiData()