[英]Running ajax request in javascript synchronously?
我的代码有这个问题。 我有一个执行AJAX调用并调出接口的函数,并且AJAX被分离在另一个函数中。 我在某个地方调用它,并跟随一些代码。 这是一个例子:
function doAjaxStuff(){
//do something
}
function anotherFunction(){
doAjaxStuff();
//proceed with further code
}
(从$(document).ready
调用函数anotherFunction
)
由于进一步的代码完全取决于我要加载的内容,例如我正在尝试访问一个元素,但尚未加载,这给了我null值,并且没有任何效果。 因此,如果我可以等到我在anotherFunction
调用的函数完全执行后,对我来说将更容易处理。 我看过没有错误的promises
有助于使代码同步(无法理解如何实现)。 帮帮我!
您可以将回调函数作为参数传递给doAjaxStuff
,并在ajax请求完成时调用它。
function doAjaxStuff(callback) {
$.ajax({
success: function(data) {
// do some stuff with data
callback(data);
}
});
}
function anotherFunction() {
doAjaxStuff(function(data) {
alert(data);
})
}
在JavaScript中,函数也是对象,这意味着它们可以作为参数传递给另一个函数,也可以使用任何其他值来传递。 因此,在这种情况下,我们在doAjaxStuff
函数中有一个名为callback
的参数。 当ajax请求完成时,我们可以调用此作为参数传递的函数。
另一种方法是使用deferred
对象
function doAjaxStuff(){
return $.ajax(...);
}
function anotherFunction() {
$.when(doAjaxStuff()).then(function(){
// other code to run after ajax call
});
}
尝试这样的事情
$.ajax({
url:"demo_test.txt",
async:false,
success:function(result){
}
});
所有请求都是异步发送的(即默认情况下设置为true)。 如果需要同步请求,请将此选项设置为false
参考
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.