首页 > 解决方案 > jQuery回调函数未按顺序执行

问题描述

我正在搜索如何按照编写的顺序执行代码(因为我需要只有在满足某些条件时才会发生效果)并且解决方案似乎是回调函数。我试过这个:

(function(callback) {
  let found = false;
  $.getJSON("people.json", function(data) {
    $.each(data.people, function() {
      if (this.number === $('#number').text()) {
        console.log("yes");
        found = true;
      }
    });
  });

  callback(found);
})(function(found) {
  if (found == false) {
    console.log("no");
  }
});

所以我创建了这些函数,但它似乎没有按预期工作,因为回调函数是在另一个函数结束之前执行的。

当找到某些东西时,控制台将记录 no 然后是 yes,这意味着它不是按顺序发生的。

现在我看到这个函数没有同步,我怎么能确定我的 js 文件的其余部分按预期工作?什么时候可以期待同步,什么时候不能?

删除了该功能并执行了此操作:

let found = false;
$.getJSON("people.json", function(data) {
  $.each(data.people, function() {
    if (this.number === $('#addFriendScreen > p').eq(0).text()) {
      found = true;
      console.log("true");
    }
  });
  if (found === false) {
    console.log("false");
  }
});

}

现在它可以工作了

标签: javascriptjquery

解决方案


推荐阅读