javascript - JQuery Ajax 是如何工作的?

标签 javascript jquery ajax

我正在尝试将数据从 JQuery Ajax 发送到通用处理程序,该处理程序计算某些内容并返回结果。 Ajax 请求是在 JQuery 端的 for 循环内发出的。代码看起来像这样:

function send(Handler, ids) {
    var URL = "http://" + window.location.host + "/Handlers/" + Handler + ".ashx";
    var i;
    for (i = 0; i < 10; i++) {
        var cur = $('.' + ids[i]);
        $.ajax({
            url: URL,
            type: "POST",
            data: JSON.stringify({
                Data: cur
            }),
            dataType: "json",
            cache: false,
            beforeSend: //my before send code,
            success: //my success code,
            error: //my error code
        });
    }
    alert('Done!');
}

我在 Visual Studio 2012 中的以下行放置了 3 个断点:

$.ajax({

这个

alert('Done!');

第三个断点位于通用处理程序的第一行。

现在,当我尝试执行此代码时,Ajax 以异步方式运行良好。但是,当它到达第一个断点时,停止在那里,然后我恢复它,而不是到达通用处理程序的断点,它继续循环并返回到第一个断点。然后,在到达第二个断点后,它会针对每个值一次又一次地停止在通用处理程序的断点处。

那么,这是否意味着 Ajax 首先收集所有 ajax 请求,然后在 for 循环之后一起执行它们?

最佳答案

Javascript 是单线程且非阻塞的。这意味着在第一次迭代中不会等待 ajax 调用完成,它将返回并开始第二次迭代,依此类推。 所以,不,它不会一起执行它们。它肯定会按照循环的顺序启动 ajax 调用,但无法知道什么会先结束。它可能会进行所有 ajax 调用,然后得到答案(并不意味着它是第一次迭代的答案),或者在循环中间它可能会得到答案。

关于javascript - JQuery Ajax 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649614/

相关文章:

javascript - Chutzpah 在运行报道时无法找到引用

javascript - 在 IndexedDb 中将数据输入数据库时​​出错

javascript - 仅小于 24 小时前的 Timeago 日期格式

javascript - 将结果从 Ajax 请求传输到数组的更简洁的方法

javascript - 针对不同端口的 CORS 获取

javascript - 如何提交表单而不重定向到其操作页面?

jquery - 使用 jquery css 在 textarea 关键字旁边定位搜索框

php - 使用 PHP/SQL 通过单击事件处理程序实现动态 JavaScript 变量

javascript - 当鼠标(或手指)不再拖动时,如何才能仅在更改时运行 AJAX 调用?

java - 使用 AJAX Post 下载文件时,流响应打印在控制台上