Backbone Javascript:等待一个函数完成后再运行另一个函数

Backbone Javascript: Wait for a function to finish before running another one

本文关键字:函数 另一个 再运行 一个 Javascript 等待 Backbone      更新时间:2023-09-26

我是Javascript的新手,在阅读了几个例子后,我仍然无法做到这一点。我知道我需要使用回调,但我的代码不起作用。以下是我尝试的

$(this.el).html(this.template(), {
  success: function() {
    return this.collection.each(this.appendEntry);
  }
});

success甚至从未被称为

好吧,如果你想在异步任务完成时做一些事情,你可以使用promise。例如jQuery:

$.when( myAsyncTask() )
.then(function(){
  console.log("Executed when myAsyncTask() is done..");
});

如果您只想在成功提取Collection数据时执行某些操作,请使用Backbone.Collection.fetch()success()回调方法

myCollection.fetch({
  success: function(data){
    console.log("Your Collection data is available now.");
  }
});

$(this.el).html()(或者更简洁地说,this.$el.html())是一个同步函数调用。在该函数完成之前,不会执行其他Javascript代码。

this.$el.html(this.template());
this.collection.each(this.appendEntry);

将按顺序执行这两个语句。

您是否碰巧以某种方式重写了Undercore template()函数,在这种情况下this.template()已经变成了异步调用?如果是这样,您需要向模板代码添加回调支持,并将html()的执行推迟到它完成。