【问题标题】:How to return data from a fetch and use the data to another function如何从 fetch 返回数据并将数据用于另一个函数
【发布时间】:2020-10-13 10:30:29
【问题描述】:

我想使用从获取请求中获得的数据,因此我将其作为数组返回。返回值(数组)将用于另一个函数,但我得到了一个承诺:

Promise {<pending>}
__proto__: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Array(10)

下面是完整代码

function getEmailList() {
  fetch(myData.root_url + '/wp-json/wp/v2/email', {
    method: "GET",
    headers: {
      'Content-Type': 'application/json'
    }
  }).then(response => {
    return response.json();
  }).then(emails => {
    emails.map((email) => {
      emailArr.push(email.title.rendered)
    })
    return emailArr;
  }).catch(err => console.log('failed', err))
}

function getData() {
  let emailList = getEmailList();
  console.log(emailList)
}

【问题讨论】:

标签: javascript fetch


【解决方案1】:

你的调用代码可以是

function getData() {
  getEmailList().then(emailList => console.log(emailList));  
}

【讨论】:

  • 谢谢你。我会尝试阅读更多关于异步调用的内容。干杯
  • 您需要在getEmailList()中返回fetch
【解决方案2】:

使用异步等待

function async getData() {
  let emailList = await getEmailList();
  console.log(emailList)
}

【讨论】:

  • 这不会按原样工作。 OP 的函数不返回任何等待。你的函数只会记录未定义的。
【解决方案3】:

您需要在getEmailList() 中返回fetch 并在getData() 中使用async/await

function getEmailList() {
  return fetch(myData.root_url + '/wp-json/wp/v2/email', {
    method: "GET",
    headers: {
      'Content-Type': 'application/json'
    }
  }).then(response => {
    return response.json();
  }).then(emails => {
    emails.map((email) => {
      emailArr.push(email.title.rendered)
    })
    return emailArr;
  }).catch(err => console.log('failed', err))
}

async function getData() {
  let emailList = await getEmailList();
  console.log(emailList)
}

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多