更改嵌套回调功能内部的变量



基本上我要完成的工作是从handlemusicapicalls函数中获取结果,并将其推入结果数组,该阵列在get路由的回调函数中声明。当前,当我运行此操作时,拳头输出为" []"(来自第二个控制台。log(,然后在其下是我想要看到的实际数据(first Console.log(。有建议吗?

router.get("/activities", middleware.isLoggedIn, function(req, res) {
  var destination = req.query.destination;
  var startDate = req.query.daterange.replace(/s+/g, '').split("to")[0];
  var endDate = req.query.daterange.replace(/s+/g, '').split("to")[1];
  var activities =  req.query.activities;
  var results = [];
  helper.handleMusicAPICalls(destination, startDate, endDate, activities, function(res) {
    console.log(res);
    results.concat(res);
  });
  console.log(results);
});

您的handleMusicAPICalls立即执行所有参数,包括处理程序回调(最后一个参数(,但是该回调不会立即被调用。

,然后下一行 handleMusicAPICalls是您的console.log(results);

截至目前,它已经空了,因为没有人修改它。然后,当事件发生时(任何事件是正确的(,事件回调会异步执行,然后这两行被执行

console.log(res); results.concat(res);

它仍然可以访问result,因为它已访问了外部变量,因为它创建了一个闭合ENV,因此您可以对其进行修改,并且正在登录它。

希望它有帮助。

最新更新