JavaScript - Ajax 非同期読み込みに関して、データ遅延の問題について質問してください。
阿神
阿神 2017-06-30 09:53:44
0
6
718

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

阿神
阿神

闭关修行中......

全員に返信(6)
为情所困

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

いいねを押す +0
ringa_lee

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

いいねを押す +0
学霸

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

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

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

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

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

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

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

いいねを押す +0
为情所困

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

いいねを押す +0
过去多啦不再A梦

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

いいねを押す +0
巴扎黑

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート