繁体   English   中英

在javascript中同步运行ajax请求?

[英]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

参考

http://api.jquery.com/jquery.ajax/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM