Backbone.Collection获取的竞争条件

木海民

我在选定的月份中生成日期列表,对于每个日期,我都会进行Backbone.Collection提取。

这是我一个月中每个日期的循环播放方式

for (var i = 1; i <= numOfDays; i++) {
   var d = i < 10 ? '0'+i:i;
   var v = new View({
      dt: this.year + this.month + (d),
      param: this.array
   });      
   this.$el.append(v.render().el);
}

如您在上方看到的,每个视图(backbone.view)都将代表dateparam object然后我在param调用render()时使用UnderscoreJs _.each方法循环对象

_.each(this.param, this.reading, this);

然后它将启动一个新对象backbone.collection并立即执行抓取

reading: function (value, key) {
   var _this = this;
   this.fetchData(new Data.Collection(), '/api/ + value.ipid').done(function(coll) {
      var input = $('<input>').val(value.ipid).attr('data-inid', coll.first().get('in_id'));
      _this.$el.append(input);
   });
}

我单独一个函数this.fetchData这样

fetchData: function (obj, url) {
    var deferred = $.Deferred(),
        collection = obj;           
    collection.url = url;
    var xhr = collection.fetch().done(function(data, textStatus, jqXHR) {
        deferred.resolve(collection, data, textStatus, jqXHR);
    }).fail(deferred.reject);
    var promise = deferred.promise();
    promise.abort = _.bind(xhr.abort, xhr);
    return promise;     
}

不幸的是,对于每个视图对象内部项目顺序param都会改变,因为它取决于的竞争条件backbone.ajax让我们看看param对象的项目

[{ipid: 44, measure: "cumec"},{ipid: 45, measure: "meter"},{ipid: 46, measure: "milimeter"}{ipid: 47, measure: "cumec"}]

对象项的顺序正确。44、45、46和47。但是要在初次通过时获得列表,将在获取操作后发生变化

我该如何告诉bonesjs或underscorejs在开始循环param对象内的另一个项目之前等待每个提取操作完成

我只希望循环(_.each)等待提取操作完成后再继续循环

希望有人能启发实现这一目标的方法。谢谢你,有一个美好的一天

大卫

如果在视图创建时(即在reading函数内部创建并附加DOM元素,则从done回调内部进行引用,这些元素的顺序将与param数组内部的顺序相同。

旁注:您可以collection直接使用url实例化,而无需将另一个jQuery Prom包装在fetch返回的Prom周围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的Backbone Collection重置事件未触发?

来自分类Dev

为什么我不能制作Backbone.Views的Backbone.Collection?

来自分类Dev

从模型获取属性并将其显示在模板中-Backbone

来自分类Dev

Backbone.js在POST请求上获取数据

来自分类Dev

Backbone Collection 'add' event not firing

来自分类Dev

如何重写Backbone Collection的删除方法,然后调用父级

来自分类Dev

Make a Backbone collection of models with data from a JSON file

来自分类Dev

Laravel。如何获取/通过Backbone中的登录用户ID

来自分类Dev

Backbone.Model静默“获取”

来自分类Dev

在Backbone的选项视图中获取选定模型的最佳方法

来自分类Dev

如何在Backbone模型获取调用期间触发错误?

来自分类Dev

Backbone / Underscore:如何在渲染中获取模型的索引?

来自分类Dev

从Backbone.js中的Collection获取构造模型

来自分类Dev

在子视图中获取Backbone父视图事件

来自分类Dev

Backbone Collection在Firefox中添加了奇怪的行为

来自分类Dev

一个Collection侦听BackBone中多个模型的更改

来自分类Dev

如何重写Backbone Collection的删除方法,然后调用父级

来自分类Dev

Backbone.js呈现Collection View问题

来自分类Dev

为什么Backbone的collection create()方法不填充ID?

来自分类Dev

Backbone.js collection.remove文档说明

来自分类Dev

Backbone.Model静默“获取”

来自分类Dev

Yii + Backbone获取数据

来自分类Dev

Backbone.Collection获取的竞争条件

来自分类Dev

如何使用嵌套模板从$ data上下文对象获取Knockback Collection中的基础Backbone集合

来自分类Dev

具有任意参数的Backbone Collection.create()

来自分类Dev

Backbone.js:如何从collection.create中获取模型验证错误

来自分类Dev

使用Backbone.Collection获取但值不包括

来自分类Dev

Backbone - Updating models in collection with data polled from another API

来自分类Dev

Backbone collection.reset 函数返回数组

Related 相关文章

  1. 1

    为什么我的Backbone Collection重置事件未触发?

  2. 2

    为什么我不能制作Backbone.Views的Backbone.Collection?

  3. 3

    从模型获取属性并将其显示在模板中-Backbone

  4. 4

    Backbone.js在POST请求上获取数据

  5. 5

    Backbone Collection 'add' event not firing

  6. 6

    如何重写Backbone Collection的删除方法,然后调用父级

  7. 7

    Make a Backbone collection of models with data from a JSON file

  8. 8

    Laravel。如何获取/通过Backbone中的登录用户ID

  9. 9

    Backbone.Model静默“获取”

  10. 10

    在Backbone的选项视图中获取选定模型的最佳方法

  11. 11

    如何在Backbone模型获取调用期间触发错误?

  12. 12

    Backbone / Underscore:如何在渲染中获取模型的索引?

  13. 13

    从Backbone.js中的Collection获取构造模型

  14. 14

    在子视图中获取Backbone父视图事件

  15. 15

    Backbone Collection在Firefox中添加了奇怪的行为

  16. 16

    一个Collection侦听BackBone中多个模型的更改

  17. 17

    如何重写Backbone Collection的删除方法,然后调用父级

  18. 18

    Backbone.js呈现Collection View问题

  19. 19

    为什么Backbone的collection create()方法不填充ID?

  20. 20

    Backbone.js collection.remove文档说明

  21. 21

    Backbone.Model静默“获取”

  22. 22

    Yii + Backbone获取数据

  23. 23

    Backbone.Collection获取的竞争条件

  24. 24

    如何使用嵌套模板从$ data上下文对象获取Knockback Collection中的基础Backbone集合

  25. 25

    具有任意参数的Backbone Collection.create()

  26. 26

    Backbone.js:如何从collection.create中获取模型验证错误

  27. 27

    使用Backbone.Collection获取但值不包括

  28. 28

    Backbone - Updating models in collection with data polled from another API

  29. 29

    Backbone collection.reset 函数返回数组

热门标签

归档