更改嵌套callback函数中的variables

基本上我试图完成的是从handleMusicAPICalls函数获取结果,并将其推送到结果数组中,该结果数组在get路由的callback函数中声明。 目前当我运行这个时,第一个输出是“[]”(从第二个console.log),然后在它下面是我想看到的实际数据(第一个console.log)。 有什么build议?

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立即执行包括处理程序callback(最后一个参数)在内的所有参数,但是这个callback不会立即被调用。

然后处理handleMusicAPICalls的下一行是你的console.log(results);

所以到现在为止没有人修改它是空的。 然后当事件发生时(任何事件都是如此),事件callbackasynchronous执行,然后这两行被执行

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

它仍然有权访问result因为它已经访问了外部variables,因为它创build了一个闭包,所以你可以修改它,并且你正在logging它。

希望能帮助到你。