我对javascript有点陌生。最近在做一个node.js项目,遇到了javascript中异步回调的问题。我的代码如下:
所以理想情况下,我希望执行请求方法,然后执行来自 res.on('data') 事件的回调,最后调用 .each() 迭代器的回调。不幸的是,javascript 的异步特性导致程序甚至在执行第一个回调之前就退出了主代码块。
var req = https.request(options, function(res) {
// console.log("statusCode: ", res.statusCode);
// console.log("headers: ", res.headers);
console.log('1st call back exec');
res.on('data', function(d) {
console.log('2st call back exec');
var $ = cheerio.load(d);
//traversing method
$('.dddefault').each(function(i){
console.log('3st call back exec');
if(i == 3){
remainingSeats = parseInt($(this).text().trim());
console.log('inner0:'+remainingSeats);
return;
}
});
console.log('inner1:'+remainingSeats);
});
console.log('inner2:'+remainingSeats);
});
req.end();
req.on('error', function(e) {
console.error(e);
});
谁能指出我正确的方向,让我的代码按照我的预期工作?谢谢。