XMLHttpRequest同步或异步

时间:2011-11-21 13:44:22

标签: javascript

在我的JS中,我向bit.ly api发送一个get请求来缩短URL。问题是我需要返回的URL才能在代码中使用。

最好为此使用同步请求吗?因为它在使用bit.ly的XHR请求之后的任何代码都会失败,因为响应尚未返回短URL。

bitlyXHR.onreadystatechange = function() {
    if (bitlyXHR.readyState == 4) {
        if (bitlyXHR.status == 200) {
            var obj = JSON.parse(bitlyXHR.responseText);
            // Do something
        }
    }
};

bitlyXHR.open("GET", "http://api.bitly.com/v3/shorten?login=&apiKey=&longUrl=" + longURL + "&format=json");
bitlyXHR.send();

// Some code here that uses the short URL

2 个答案:

答案 0 :(得分:2)

您可以这样做:

function doSomething(obj) {
    // this does something with the result.
}

bitlyXHR.onreadystatechange = function() {
    if (bitlyXHR.readyState == 4) {
        if (bitlyXHR.status == 200) {
           var obj = JSON.parse(bitlyXHR.responseText);
           doSomething(obj); 
        }
    }
};

bitlyXHR.open("GET", "http://api.bitly.com/v3/shorten?login=&apiKey=&longUrl=" + longURL + "&format=json");
bitlyXHR.send();

答案 1 :(得分:0)

将使用短URL的代码移动到具有执行某些操作注释的代码部分,或者更好的是,从那里调用包含该代码的函数。

这样做是使用回调称为。您提供了一个函数,以便在请求返回时执行。这是处理AJAX的最佳方式(A代表异步,毕竟)请求,因为它不会在等待调用完成时锁定浏览器。