javascript - 使用 async wait 时 axios 不返回数据

标签 javascript node.js async-await

这是我的 axios 函数

const requestAllSubPosts = (sub,epoch,count) => {

  const res = {};
  const sub_url = `https://api.pushshift.io/reddit/search/submission/?subreddit=${sub}&limit=1000&sort=desc&before=${epoch}`;     


 return axios
      .get(sub_url)
      .then(response => {
        const d = response.data.data;

        if(d.length > 0) {
          subFetchEpoch = d[d.length - 1].created_utc;

          subDataArray = subDataArray.concat(d);        
          count++;

          requestAllSubPosts(sub,subFetchEpoch,count)

        }
        else {
           console.log('data-empty');

           res.data = subDataArray;
           res.epoch = subFetchEpoch;

           console.log(res); <-- WORKING
           return  res ; <-- NOT WORKING


        }


      })
      .catch(error => {
        return  error.message 
      });


}

我在某种循环中使用 axios,并获取数据直到响应为空。之后我想返回父函数中附加的数据。

这是父函数。我调用 axios 并记录响应。但我没有收到任何回复

async function  fetchAllSubPosts (sub, epoch)  {

      const today = moment(new Date()).valueOf();
      // let ep_a = moment(ep).valueOf()

      let dataArray = [];
      let resp = await requestAllSubPosts(sub, ep, 1) 
      console.log({resp}); <-- NOT WORKING

}

最佳答案

当您递归调用 requestAllSubPosts() 时,then() 没有 return,因此默认情况下将返回 undefined code> 到链中的下一个 then()await

您想要从递归调用中返回 promise 。

更改:

 requestAllSubPosts(sub,subFetchEpoch,count)

return  requestAllSubPosts(sub,subFetchEpoch,count)

关于javascript - 使用 async wait 时 axios 不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58901684/

相关文章:

javascript - Cordova 5.1.1 中的 FormData 相机操作不起作用

javascript - 如何从Json中获取数据

node.js - 无法安装 "merged-pooler"模块 nodeJs

c# - 异步任务测试

c# - 任务等待和线程终止导致内存泄漏

javascript - 从子组件向 React 上下文添加值

javascript - 如何在 AngularJS 中以复杂的方式绑定(bind)(?)多个变量?

javascript - 如何将控制台中的文本拆分为单独的参数?

CSS 不适用于 ejs 文件

c# - 深入理解 ASP.NET MVC 上的 async/await