ホームページ  >  記事  >  ウェブフロントエンド  >  js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

php是最好的语言
php是最好的语言オリジナル
2018-08-01 11:07:052218ブラウズ

まずは同期リクエストを見てみましょう

受信したバックグラウンドは0~10です
ajaxコールバックの出力も0~10です

for (var index = 0; index <= 10; index++) {
    $.ajax({
        async: false,//同步
        url: &#39;/HelloWorld&#39;,
        type: &#39;POST&#39;,
        dataType: &#39;html&#39;,
        data: {index: index}
    }).done(function () {
        console.log(index);
    })
}

js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

非同期に切り替えた後は
バックグラウンドで受信したデータが変化しています予想される0~10ではありません

js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

ajaxのコールバック出力は同じで、11 11になります
js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

ajaxの実行順序はforループの実行後、iは11になります
ajaxのときに実行する必要がありますi への参照を保持することによってのみ、期待される効果を達成できます

for (var index = 0; index <= 10; index++) {
    (function (num) {//形参
        $.ajax({
            async: true,//异步
            url: &#39;/HelloWorld&#39;,
            type: &#39;POST&#39;,
            dataType: &#39;html&#39;
        })
            .done(function () {
                console.log(num);
            })
    })(index)//实参}

このようにして、バックグラウンドによって受信される値は、フロントデスクによって出力される値と一致することができます

まず、同期リクエストを見てみましょう
バックグラウンドで受信するデータは0~10です
ajaxのコールバック出力も0~10です

for (var index = 0; index <= 10; index++) {
    $.ajax({
        async: false,//同步
        url: &#39;/HelloWorld&#39;,
        type: &#39;POST&#39;,
        dataType: &#39;html&#39;,
        data: {index: index}
    }).done(function () {
        console.log(index);
    })
}

js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

非同期に切り替えた後
バックグラウンドで受信したデータが変更されており、予想される0~10ではありません
js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

ajaxコールバックの出力は同じで、11 11になります
js での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解する

ajaxの実行順序はforループの実行後であり、iは11になります
これを実現するには、ajaxが実行されるときにiへの参照を保持する必要があります期待される効果

for (var index = 0; index <= 10; index++) {
    (function (num) {//形参
        $.ajax({
            async: true,//异步
            url: &#39;/HelloWorld&#39;,
            type: &#39;POST&#39;,
            dataType: &#39;html&#39;
        })
            .done(function () {
                console.log(num);
            })
    })(index)//实参}

このようにして、バックグラウンドで受け取った値とフロントで出力した値を比較することができます 値が一貫しています

関連記事:

同期処理と非同期処理の方法と違いのまとめjs_javascript スキル

ajax 同期リクエストと非同期リクエストの違い分析

関連ビデオ:

Qianfeng Education PHP 非同期通信フレームワーク Swoole 解釈ビデオチュートリアル

以上がjs での同期、クロージャ、非同期リクエストの組み合わせを簡単に理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。