如何从提取请求返回数据

时间:2019-10-16 10:36:15

标签: javascript api fetch

我有以下代码:

 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对象。我如何获得承诺值?

1 个答案:

答案 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);
})

OR

您可以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()