外側に空の配列を定義し、次に ajax リクエストを作成し、リクエスト内に別のリクエストをネストして、最後にそれを 3 つのオブジェクトに結合して空の配列を挿入します。 次に、最も外側の配列の長さを出力します。出力された長さは 0 です。この問題は代入に影響します。解決方法を教えてください。
闭关修行中......
ajax の非同期はこのような問題を引き起こす可能性があります。解決策 1. Promise 2. Ajax コールバックに値を割り当てる
ajax は非同期です。ログ コードが実行されたとき、ajax はまだ戻っていません。
イベントループの問題を確認してください
ajax が非同期操作であることはわかっています。
現時点での console.log の場所は、実際には [].length です
現在の js が実行された後、ajax 成功コールバックが実行され、成功コールバックが成功した後にのみ、arr 配列が値にプッシュされます。
プロミスに関しては、このネストされたコールバックは非常に適切に最適化されますが、ajax をカプセル化する必要があります
ajax は非同期データ取得メソッドであるため、非同期で取得されたデータは通常理解されている同期方法では処理できません。console.log を成功コールバック関数に記述する必要があります。
async: false を設定して、外部から内部の値を取得できるようにします。
この場合、ajax同期に変更する必要があります。非同期の場合、ajax とその背後にあるコードが同時に実行されます
ajax の非同期はこのような問題を引き起こす可能性があります。解決策 1. Promise 2. Ajax コールバックに値を割り当てる
ajax は非同期です。ログ コードが実行されたとき、ajax はまだ戻っていません。
イベントループの問題を確認してください
ajax が非同期操作であることはわかっています。
現時点での console.log の場所は、実際には [].length です
現在の js が実行された後、ajax 成功コールバックが実行され、成功コールバックが成功した後にのみ、arr 配列が値にプッシュされます。
そのため、2 番目の ajax 成功コールバックに console.log を追加するとよいでしょうプロミスに関しては、このネストされたコールバックは非常に適切に最適化されますが、ajax をカプセル化する必要があります
すべての ajax を Promise にラップすることをお勧めしますajax は非同期データ取得メソッドであるため、非同期で取得されたデータは通常理解されている同期方法では処理できません。console.log を成功コールバック関数に記述する必要があります。
async: false を設定して、外部から内部の値を取得できるようにします。
この場合、ajax同期に変更する必要があります。非同期の場合、ajax とその背後にあるコードが同時に実行されます