jQuery函数没有在另一个之前执行

时间:2014-08-06 23:19:15

标签: javascript jquery

这两个函数都是$.getJSON()函数,即使我的第一个函数放在另一个函数之前,它有时会发生在第二个函数之后。请注意,我提到“有时”。当我不断刷新页面时,我会得到不同的结果,就像是随机选择首先调用哪个函数。以下是代码片段:

timeClusters = [];
$.getJSON('java_output/tasksTab.json', function (data) {
  console.log ("first");
  // Method stuff here, not important
});

$( document ).ready(function() { 
  console.log("second");
  // Method stuff here, not important
});

现在,当我运行程序并查看控制台时,有时我会得到

first
second

但其他时候我

second
first

我必须先获得第一个,第二个,因为第二个方法处理在第一个方法中生成和更改的数据。

如果您需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:1)

getJSON方法是异步的,这意味着一旦启动它最终会保存一个结果,包含在文档就绪中的函数会在DOM准备好后立即触发,而不是执行此操作序列将代码从ready函数移动到getJSON回调:

$(document).ready(function() {
  $.getJSON('java_output/tasksTab.json', function (data) {
    console.log ("first");
  }).done(function() {
    console.log( "second" );
  })
})

由于adeneo指出您实际上并不需要链接done方法,因此您只需在默认回调中添加计算:

$(document).ready(function() {
  $.getJSON('java_output/tasksTab.json', function (data) {
    console.log ("first");
    console.log( "second" );
  })
})

您可以使用的其他类型的回调是failalways