更改嵌套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它。
希望能帮助到你。