串行异步XmlHTTPRequest

时间:2012-11-14 15:20:10

标签: javascript

这是进行串行异步调用的更好方法吗?

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

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

这会导致回调地狱问题吗?

1 个答案:

答案 0 :(得分: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();

你的陈述将被链接。

fiddle