[英]wait ajax finish in a function
我有一个函数为foo的对象,其中包含jQuery ajax调用
foo: function() {
...
jQuery.ajax({
contentType : "application/json",
type: "POST",
async: true,
...,
success: function(data) {
globalVariable = 1;
},
error: function(error) {
}
});
}
我的测试代码:
var pass = true;
myObj.foo();
if (globalVariable !== 1) {
pass = false;
}
我也希望语句myObj.foo()
用ajax finish完成。 如果ajax没有完成,则globalVariable
不等于1。
我无法在ajax中将async
设置为false
,因为这是生产代码。
您的函数正在运行。 只是它运行异常。 如果要在foo()运行时停止其他进程,请将async设置为false 。
foo: function() {
...
jQuery.ajax({
contentType : "application/json",
type: "POST",
async: false,
...,
success: function(data) {
globalVariable = 1;
},
error: function(error) {
}
});
}
如果是这种情况,请向foo添加一个函数参数。 在ajax调用完成后,将调用该函数。
var bar = function(){
pass=true;
}
然后foo将成为
foo: function(func) {
...
jQuery.ajax({
contentType : "application/json",
type: "POST",
async: false,
...,
success: function(data) {
globalVariable = 1;
func();
},
error: function(error) {
}
});
}
呼叫foo
var pass = false;
myObj.foo(bar);
代码段遵循promise
方法:
var pass = true;
var myObj = {
foo: function () {
return $.Deferred(function (deferred) {
jQuery.ajax({
type: "POST",
url: 'https://httpbin.org/post'
}).done(function () {
deferred.resolve(1);
}).fail(function () {
deferred.reject();
});
}).promise();
}
};
myObj.foo().done(function (globalVariable) {
if (globalVariable !== 1) {
pass = false;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.