基本上我要完成的工作是从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,因此您可以对其进行修改,并且正在登录它。
希望它有帮助。