javascript - 在 promise 链中将数据推送到新数组时出现问题

标签 javascript promise axios

我无法弄清楚为什么我的数据没有被推送到我的新数组“结果”中。 newArr[0].mscd.g[i] 是多个对象的列表。

var axios = require('axios');
var moment = require('moment');
var _ = require('lodash');

var getData = function() {
  return getNBASchedule().then(function(payload) {
      return filterByMonth('January', payload);
  }).then(function(result) {
      return result
  });
}
....

getData 从 baseURL 获取数据并返回对象列表。

var getMonthlySchedule = function(data){
  var results = [];
  var newArr = data.slice(0, data.length);
  for (var i = 0; i <= newArr[0].mscd.g.length; i++) {
    if (newArr[0].mscd.g[i].v.tid === 1610612744 || newArr[0].mscd.g[i].h.tid === 1610612744) {
      results.push(newArr[0].mscd.g[i]); <---- //does not seem to work
      // however if I were to console.log(newArr[0].mscd.g[i], 
      // I would see the list of objects)
    }
  }
  return results; <-- //when i console at this point here, it is blank
};

var getSchedule = function () {
  return getData().then(function(pl) {
    return getMonthlySchedule(pl)
  })
};

var monthlyResults = function() {
  return getSchedule().then(function(r) {
    console.log("result", r)
    return r
  });
};

monthlyResults();

最佳答案

除非您使用 .then() 处理程序,否则您不知道 getSchedule() 何时完成。

getSchedule().then(function(data) {
    // in here results are valid

});
// here results are not yet valid

您可能正在尝试在异步操作完成之前查看更高范围的结果。您必须使用 .then() 这样您就知道操作何时完成并且数据有效。

关于javascript - 在 promise 链中将数据推送到新数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556566/

相关文章:

javascript - 返回父 promise 函数中变量的子 promise 函数?

vuejs2 - 如何使用 Laravel Passport 和客户端凭据使用自己的 api?

c# - 如何在.cs中的特定时间执行javascript?

javascript - 如何隐藏具有相同类名的特定按钮

Javascript顺序打印到文件

javascript - Javascript promises 是否会阻塞堆栈

node.js - 如何使用 axios-mock-adapter 使用路由参数模拟 http 请求

node.js - 尝试发送文件时 FormData 发送空请求

javascript - JSON.stringify() 灾难性的

javascript - 类型错误 : e is undefined in popper. min.js?