【问题标题】:Call javascript method with order按顺序调用 javascript 方法
【发布时间】:2012-11-10 11:04:16
【问题描述】:

我在 JavaScript 中有 3 个方法,我想一个接一个地调用,也就是说按顺序调用。

recuperer_from_proposer_liste_idchamp();
nombre_etape();

【问题讨论】:

  • 那么问题是什么?
  • 它们按顺序运行,只要你没有一些异步魔法。再说一遍:问题是?...
  • 我该怎么做,因为它们是所谓的异步。
  • 您有 3 种方法,但代码显示 2。它们按顺序
  • 你有一些异步魔法,你必须处理回调函数。

标签: javascript function


【解决方案1】:

除非有任何异步调用(例如 AJAX 请求),否则这些方法将按照您键入它们的顺序运行。

JavaScript 解释器逐行执行命令。

如果您有异步调用,则需要使用回调函数来处理这些调用。如果你不明白回调是如何工作的,这里有很多guides online

【讨论】:

  • @AzeazeAzeaze 这与您的问题或我的回答无关。
  • @Jivings:我认为大多数 JS SQLite API 都是异步的
  • @ThiefMaster 我明白了,这也许更有意义。
【解决方案2】:

你可能需要把你的逻辑改成这样

function getRowsFromDatabase(callback) {
    // do your fancy database connection
    // and data retrieval here

    // when you're ready, call the registered callback

    if(typeof(callback) == "function") {
        callback(rowsRetrieved);
    }
}


function displayRowsOnScreen() {
    getRowsFromDatabase(function(rows){
        // do the dom magic here
    })
}

【讨论】:

    【解决方案3】:

    如果您确实在执行异步操作,则必须找出方法何时完成工作。所以调用方法一:

    method1 ();
    

    然后method1需要通知我们它的动作结束,为此它必须调用一个名为method1_finished的方法,然后调用method2:

    method1_finished () {
        method2 ();
    }
    

    方法3也是如此:

    method2_finished () {
        method3 ();
    }
    

    根据代码的来源,您通常可以在需要回调的地方直接定义匿名函数:

    xmlhttp.onreadystatechange = function()
    {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
            // call succeeded, now go on to the next step
      }
    }
    xmlhttp.open("GET","someurl.php",true);
    xmlhttp.send();
    

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多