javascript - Javascript/jQuery ajax调用同步的常用做法

标签 javascript jquery ajax concurrency semaphore

我很好奇这是否被认为是好的做法或更好的做法。比如说,我必须连续进行两个或多个 ajax 调用,并等待所有调用完成后再继续。同样在这种情况下,我使用 JSONP 来调用单独端口上的服务(同源策略)。

$(document).ready(function() {

   var semaphore = 0; 

   var proceed = function() { ... }; 

   goAjax('arg0', function(data) {

       semaphore++;
       checkStatus(semaphore, proceed);  
   }); 

   goAjax('arg1', function(data) {

       semaphore++;
       checkStatus(semaphore, proceed); 
   }); 

}

function checkStatus(sem, callback)
{
    if (sem == 2)
    {
        callback(); 
    }
}

function goAjax(args, callback) {

    $.ajax({
                ...

                dataType: "jsonp",
                success: function(data) {
                                callback(data);                          
                },          
            }); 
 }

最佳答案

虽然我更愿意将这两个请求一起批处理,但我没有发现您正在做的事情有问题。通过批处理,我的意思是将其合并为一个调用,并在处理请求的服务器中进行两个服务调用,否则将单独调用,然后在一个回调中处理。必须等待这两个调用在 javascript 中完成,这违背了使它们成为异步(ajax)调用的全部目的。在某些情况下,这两个调用可能会单独调用,但在您的 javascript 和服务中添加某种机制以在一次调用中处理多个请求并没有什么坏处,例如适用的情况。

关于javascript - Javascript/jQuery ajax调用同步的常用做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7617345/

相关文章:

javascript - 从表单提交上的单选按钮获取 HTML 自定义 data-* 属性

javascript - React-Native 将循环结果累积到单个字符串

javascript 函数总是返回 false

javascript - Redux:组织容器、组件、 Action 和缩减器

Javascript: clearTimeout 似乎只能暂停,不能重置或清除?

javascript - 我的必填字段消息未显示在正确的位置

javascript - jquery attr ('checked',错误)错误

javascript - 如何禁用ajax引起的下拉列表值更改?

javascript - jQuery AJAX 响应以字符串 blob 形式出现

jquery - 如何使用 jQuery Ajax 刷新页面?