在Browser Dev Tools中检查ajax调用是同步还是异步

时间:2015-06-04 12:45:27

标签: javascript ajax asynchronous google-chrome-devtools sync

有没有办法在浏览器开发工具中确认特定的ajax请求是异步还是同步,例如Chrome Developer Tools或Firebug。

对于ajax请求,HTTP请求标头不指示其同步还是异步。

  

X-请求-随着:XMLHttpRequest的

3 个答案:

答案 0 :(得分:6)

不,你不能这样做,但你可以在控制台中运行它或将其添加到你的代码

XMLHttpRequest.prototype.open = (function(open){
    return function(method, url, async, user, password) {
        console.log("xhr call: "+url +"isAsync: "+async);
        open.apply(this, arguments);
    };
})(XMLHttpRequest.prototype.open);

它记录了信息:D希望它有用

答案 1 :(得分:2)

我不知道您是否还在寻找答案,但我希望这会对某人有所帮助!

在Chrome浏览器中,导航至rightClick / inspect / networkTab / xhr?将光标移动到处理您的请求的时间,如下图所示:

enter image description here

这是我的异步代码(默认ajax)

`$.ajax({
    type: "GET",
    contentType: "application/json",          // data type of request
    url: //url,
    data: //data,
    dataType: "json",                             // data type of response
    success: function (result) {  
        
        // some code here

    }

});`

我正在对本地主机进行一系列ajax调用,每个调用都链接到上一个调用的响应。但是我得到了错误的输出,因为所有ajax请求都几乎同时发送,并且本应顺序接收的响应(蓝色)混乱了。下面的时序图完美地显示了该问题(请查看“瀑布”选项卡)。

enter image description here

这是我的同步呼叫代码(异步:ajax中为false)

$.ajax({
async: false,
type: "GET",
contentType: "application/json",          // data type of request
url: //url,
data: //data,
dataType: "json",                             // data type of response
success: function (result) {  

    // some code here

}

});

enter image description here

现在如何知道async:false是否有效?

您可以看到,异步模式下的ajax调用时间彼此重叠,同步模式下的调用时间(async:false)也明显不同,从而证明了同步调用[async:false]可以正常工作。如果时间仍然重叠,则与我的情况不同,同步调用可能无法正常工作。

答案 2 :(得分:-3)

如果指定为同步的话,所有ajax请求都是异步的,因此他们称之为异步JavaScript和XML (AJAX)。要使ajax请求同步,你必须在XMLHTTPRequest对象的open方法中传入false,如下所示

var xhr = new XMLHttPRequest();
xhr.open("POST", "file to get.php", false);

第三个参数将其指定为同步但默认为true

相关问题