1. ホーム
  2. node.js

[解決済み] Node.jsがコールバック待ちで終了するのを防ぐには?

2022-11-14 03:49:36

質問

このようなコードを持っています。

var client = new mysql.Client(options);
console.log('Icanhasclient');

client.connect(function (err) {
  console.log('jannn');
  active_db = client;
  console.log(err);
  console.log('hest');

  if (callback) {
    if (err) {
      callback(err, null);
    }

    callback(null, active_db);
  }
});

私の問題は、私がそれを実行したときにNodeがすぐに終了することです。Icanhasclient'は表示されますが、コールバック内のconsole.logのどれも呼び出されません。

(この例でのmysqlは ノードmysql .

node.jsが終了する前にコールバックの完了を待つようにするためにできることはありますか?

どのように解決するのですか?

コールバックがキューに入らない

ノードはすべてのイベント キュー が空になるまで実行されます。コールバックはイベント キュー のような呼び出しがあったときに

  emmiter1.on('this_event',callback).

が実行されました。この呼び出しは、モジュール開発者によって書かれたコードの一部です .

モジュールが同期/ブロック版からのクイックポートの場合、操作の一部が完了するまでこの呼び出しは起こらないかもしれませんし、その前にすべてのキューが空になり、nodeが静かに終了する可能性があります。

これは卑劣なバグで、モジュール開発者が開発中に遭遇しないかもしれないもので、多くの キュー を持つ忙しいシステムではあまり発生しないからです。

ユーザーのための可能な修正/バグ検出は、疑わしい関数呼び出しの前に特別なタイマー イベントを挿入することです。