検索

ホームページ  >  に質問  >  本文

JavaScript - Ajax 非同期読み込みに関して、データ遅延の問題について質問してください。

外側に空の配列を定義し、次に ajax リクエストを作成し、リクエスト内に別のリクエストをネストして、最後にそれを 3 つのオブジェクトに結合して空の配列を挿入します。
次に、最も外側の配列の長さを出力します。出力された長さは 0 です。この問題は代入に影響します。解決方法を教えてください。

阿神阿神2826日前748

全員に返信(6)返信します

  • 为情所困

    为情所困2017-06-30 09:55:44

    ajax の非同期はこのような問題を引き起こす可能性があります。解決策 1. Promise 2. Ajax コールバックに値を割り当てる

    返事
    0
  • ringa_lee

    ringa_lee2017-06-30 09:55:44

    ajax は非同期です。ログ コードが実行されたとき、ajax はまだ戻っていません。

    返事
    0
  • 欧阳克

    欧阳克2017-06-30 09:55:44

    イベントループの問題を確認してください

    ajax が非同期操作であることはわかっています。

    現時点での console.log の場所は、実際には [].length です

    現在の js が実行された後、ajax 成功コールバックが実行され、成功コールバックが成功した後にのみ、arr 配列が値にプッシュされます。

    そのため、2 番目の ajax 成功コールバックに console.log を追加するとよいでしょう

    プロミスに関しては、このネストされたコールバックは非常に適切に最適化されますが、ajax をカプセル化する必要があります

    すべての ajax を Promise にラップすることをお勧めします

    返事
    0
  • 为情所困

    为情所困2017-06-30 09:55:44

    ajax は非同期データ取得メソッドであるため、非同期で取得されたデータは通常理解されている同期方法では処理できません。console.log を成功コールバック関数に記述する必要があります。

    返事
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-30 09:55:44

    async: false を設定して、外部から内部の値を取得できるようにします。

    返事
    0
  • 巴扎黑

    巴扎黑2017-06-30 09:55:44

    この場合、ajax同期に変更する必要があります。非同期の場合、ajax とその背後にあるコードが同時に実行されます

    返事
    0
  • キャンセル返事