在前面的函数完成后运行另一个函数?

时间:2009-12-21 03:13:40

标签: javascript

如果我启动2个这样的功能:

prepare_data();
read_data();

然后我猜他们正在同时运行。但是你可以看到第二个函数取决于第一个函数,那么如何在第一个函数完成后运行后者呢?

4 个答案:

答案 0 :(得分:10)

Javascript和大多数其他语言,按顺序运行代码。

因此,他们同时运行。

实际上,不可能同时运行两个不同的Javascript代码。但是,在许多其他语言中,可以使用线程。

但是,如果他们进行AJAX调用,则两个函数调用的相应服务器端代码将同时运行 为了防止这种情况,你需要让第一个函数接受一个回调参数并将它传递给第二个函数。

答案 1 :(得分:4)

我假设第一个调用会产生某种异步调用,第二个调用依赖于它,否则这两个函数将按顺序执行。

如果是这样,你需要在第一个回调中做第二个。例如,在jQuery中:

function prepare_data() {
  $("#data").load("/load_data.php", function() {
    read_data();
  });
}

如果没有关于您使用的是vanilla Javascript还是特定库的更多信息,我们无法解释您应如何解决这个问题。我强烈建议使用某种类型的库来安装AJAX。

答案 2 :(得分:2)

可能要在第一个功能函数成功执行后调用第二个函数,如果是,那么你可以这样做

$('button').click(function()
{
    function1(someVariable, function() {
       function2(someOtherVariable);
    });
});


function function1(param, callback) {
  alert('Now first function will be called.');
  callback();
} 

答案 3 :(得分:1)

@SLaks

  

事实上,不可能运行两个   不同的Javascript代码片段   同一时间。但是,在许多其他方面   语言,有可能使用   线程。

这完全正确吗?你不能使用网络工作者并行运行JavaScript?

http://www.w3.org/TR/2009/WD-workers-20090423/

https://developer.mozilla.org/En/Using_web_workers