Sea*_*sey 3 javascript ember.js
我有一个EmberJS ArrayController.我想在这个控制器上有一个计算属性neurons,它是model属性的一个子集.子集是根据绑定到的侧边栏中的切换按钮计算的currentDataset.另一个计算属性,activePlots则取决于neurons; 该Neuron模型有一个hasMany以关系Plot,并activePlots加载所有在每个神经元对象相关联的情节对象neurons.
目前我正试图这样做mapBy,但我遇到了一个问题.每次检索一个Neuron对象都会plots返回一个PromiseArray.我需要立即操纵所有返回的图.我知道我可以调用then单个调用的promise结果get('plots'),但是如何在get('plots')所有神经元的调用返回后才执行代码?
neurons: ( ->
@get('model').filterBy('dataset', @get('currentDataset'))
).property('model', 'currentDataset'),
activePlots: ( ->
plots = @get('neurons').mapBy('plots')
# ...code to execute after all plots have loaded
).property('neurons')
Run Code Online (Sandbox Code Playgroud)
更新:从回调console.log(plotSets)内部到控制台输出的图片then
Ember.RSVP.all(@get('neurons').mapBy('plots')).then (plotSets) ->
console.log(plotSets)
Run Code Online (Sandbox Code Playgroud)

有一个方便的方法来组合promises:Ember.RSVP.all(ary)获取一个promise数组,并成为一个在解决输入数组中的所有promise时解析的promise.如果一个被拒绝,则all()承诺被拒绝.
这非常方便,例如,当启动多个并行网络请求时,并在完成所有这些请求时继续.
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |