Javascript/jQuery ajax调用同步的常用实践
Common practices for Javascript/jQuery ajax call synchronization
我很好奇这是否被认为是一种好的做法,或者什么可能更好。例如,我必须在一行中进行两个或多个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和服务中添加一些机制来处理一次调用中的多个请求并没有什么坏处,比如在适用的情况下。
我使用after
实现此功能
$(document).ready(function() {
var proceed = function() { ... },
next = after(2, proceed);
goAjax('arg0', function(data) {
next();
});
goAjax('arg1', function(data) {
next();
});
}
相关文章:
- 在控制器和数据对象之间同步数据
- 同步调用,直到用户通过angular验证为访问者
- javascript函数同步
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- 音频和动画在javasctipt循环中同步
- 主线程上的同步XMLHttpRequest已弃用
- 主干网.与Safari同步问题
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 是否同步加载了LINK元素
- 异步获取数据使用JavaScript同步获取数据
- 以同步方式获取Javascript Promise的值
- ajax调用获胜't同步执行
- javascript函数中的异步与同步.(Node.js)
- 如何同步写入process.stdout
- JavaScript 函数同步执行
- HTML5应用程序数据库同步
- Node.js和同步API函数
- Javascript/jQuery ajax调用同步的常用实践