0

これはシリアル非同期呼び出しを行うためのより良い方法ですか?

http://ajaxian.com/archives/serial-async-xhr

function run() { 
    request1(function () { 
        request2(function () { 
            request3(function () { 
                done(); 
            }); 
        }); 
    }); 
} 

これにより、コールバック地獄の問題が発生しますか?

4

1 に答える 1

0

これは防弾ではなく、例を示すだけです。

function ajax(url, callback) { 
    var req = new XMLHttpRequest(); 
    req.open("GET", url, true); 
    req.onreadystatechange = function () { 
        if (this.readyState == 4 && this.status == 200) { 
            if(callback)
            {
                callback(this.responseText);
            }
        } 
    }; 
    req.send(); 
}

ラッパーとして、あなたは次のようなことをすることになります

function loadIndex()
{
    ajax('/', function(data){
        alert(data);
        loadIndexAgain();
    });
}

function loadIndexAgain()
{
    ajax('/', function(data){
        alert('more stuff happened');
    });
}

loadIndex();

そして、あなたのステートメントは連鎖します。

フィドル

于 2012-11-14T15:42:14.167 に答える