繁体   English   中英

回调 function 返回 promise 而不是值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM