1

私は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);
});

意図したとおりにコードを動作させるために、誰かが私を正しい方向に向けることができますか? ありがとう。

4

1 に答える 1