NodeJS Promise がランダムな状況で未定義の値を返す
P粉321584263
P粉321584263 2024-01-16 14:46:41
0
1
380

まず、この質問にすでに回答がある場合は申し訳ありませんが、この種の質問を検索しましたが、役立つものは何も見つかりませんでした。

mysql npm パッケージを使用してデータベースにクエリを実行する NodeJS アプリケーションを開発しています。私は、Promise の助けを借りて正常に動作するいくつかのクエリを作成しました (それが SQL モジュールの動作方法であるため)。クエリプロシージャ関数 get_works (以下に定義) が正常に呼び出される場合は問題ありません。 ただし、Express Router でこの手続き型関数を呼び出すと、奇妙な動作が発生します。

リーリー

データベースへのクエリに未定義の値がない場合がありますが、1 つの未定義の値があると、後続のすべての値も未定義になります。

リーリー

これは私の約束のラッパーです:

リーリー

ただし、次のようにルーターの外部でこの関数を呼び出すと、完全に機能します:

リーリー ###私は何か見落としてますか?望ましい結果が得られるので、すべてのクエリは正しいと思います。問題は非同期/待機処理にある可能性があります。ご協力いただきありがとうございます。

編集1

@tromgy の提案に従って、Promise ラッパーを書き直しました。

リーリー

ただし、拒否

は決して発生しません (データベース内に一致するデータがないため、これは当然のことです)。ログをクリーンアップするために、別のデータベース接続を使用した同様のリクエストに対して別のルーターを無効にしました。このルーターを削除するとバグも解決しました。これがどのようにして可能なのかわかりません (おそらく変数がグローバルとして宣言されているので、その種の問題を探します)。

P粉321584263
P粉321584263

全員に返信(1)
P粉063862561

図に示すように、問題は共有ループ カウンタです。私の同僚の 1 人が、反復する前に let キーワードを追加するのを忘れたため、for ループによって値がジャンプされました。

私は今この JavaScript 機能が嫌いです。助けてくれてありがとう!

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!