javascript - 如何在使用 AJAX 时控制 JavaScript 函数的顺序

标签 javascript ajax asynchronous

我的设置

function ajaxLoadSth(value, attribute) {

    $.post( url, value, function(response) {

        // interpreting the response
        var foobar = $('#foo') + $('.bar').find('.sth');

        // print interpretation into DOM
        container.append(foobar);

        // do some funky stuff
        doSomeFooWithDom();
        checkSomeBarHere();
        updateSomeValuesThere();

        // now call the function again with different values 

        // THIS IS WHAT MY QUESTION REFERS TO **************
        if ( true ) {
            ajaxLoadSth(newValue, newAttribute);
        }
    });
}

我的问题

函数不得//做一些时髦的事情之前调用自身 - 部分,一些 DOM 操作,已完成执行 - 但它确实.

我的问题

  • 这是为什么呢?是因为那些“时髦的东西”位于外部函数中吗?这对于同步执行来说重要吗?
  • 如何让“自身调用”等到上面的内容完成?

我已经考虑过通过设置全局变量触发处理程序来告诉函数它们已准备就绪。每次触发处理程序时,函数都会检查所有变量是否设置正确,然后执行函数调用。那又怎么样?

非常感谢您提前抽出时间!

最佳答案

尝试回调 例如。

doSomeFunkyStuff(callback){
//DO SOME FUNKY
  callback();
}

function ajaxLoadSth(value, attribute) {

    $.post( url, value, function(response) {

        // interpreting the response
        var foobar = $('#foo') + $('.bar').find('.sth');

        // print interpretation into DOM
        container.append(foobar);

        // do some funky stuff
        doSomeFunkyStuff(function(){
           ajaxLoadSth(newValue, newAttribute);
        }

    });
}

关于javascript - 如何在使用 AJAX 时控制 JavaScript 函数的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987415/

相关文章:

node.js - Node js 中嵌套异步 mongoDB 调用

java - if/switch 评估是原子的吗?

javascript - 奇怪的 JavaScript 表示法,全是圆括号和方括号

javascript - 在浏览器窗口关闭前显示 jQuery 弹出窗口

javascript - 当url不改变时解析数据(分页)

ajax - 我如何模拟 polymer 核心 ajax,以进行单元测试

javascript - 异步 Javascript 递归

javascript - 正则表达式来定位一组带有包含和排除的单词的可选列表的单词

javascript - 为第一张图片分配类别

javascript - ajax 和 php 之间的数组 json