如何确保子组件在 Ember.run.later 完成后调用父函数 Ember

How to ensure a child component calls parent function after Ember.run.later is completed in Ember

在父组件中,我有以下内容:

.
.
.
recurringFunc: function(delay, index){
  .
  .
  .
  if (someFlag){
    Ember.run.later(_this, function() {
      _this.send('otherFunc',{index: index});
      _this.send('recurringFunc', delay, ++index);
    }, delay);
  }
},


otherFunc: function(somePara){
  .
  .
  .
}

在父模板中我有以下内容:

.
.
.
{{template-name someFlag=someFlag}}
.
.
.

然后在子组件中我有以下内容:

input: function(){
  this.set('someFlag', false);
  this.sendAction('otherFunc', {index: someVal});
}

如果从子组件触发动作,它会成功更改父组件中的 someFlag。但是代码在执行从子项发起的 otherFunc 调用之前,不会等待父项中的最后一次 Ember.run.later 迭代到 运行。

在 Ember.run.later.

的最后一次迭代之后,我还有其他缩写的代码依赖于 otherFunc 运行ning

如何从子组件调用父组件函数并确保Ember.run.later在调用的子函数执行前完成?

对于遇到此问题的任何人,这就是我所做的。

我在父组件上做了delay一个属性,在父组件中更新了otherFunc如下:

otherFunc: function(somePara){
  var currentDelay = this.get('delay');
  Ember.run.later(_this, function() {
    .
    .
    .
    .
  }, currentDelay);
}

这将在recurringFunc的最后一个延迟结束后调用新的指令。