覆盖在Dojo中返回延迟的异步方法

时间:2015-01-27 08:18:48

标签: javascript dojo override deferred chaining

我有一个异步方法asyncInit正在执行一些异步操作并返回Deferred。现在我使用另一个提供额外功能的模块扩展模块,并且还需要异步init,所以我想扩展方法asyncInit

如果asyncInit没有在其他模块中定义,我只是调用我的东西,但如果它存在,我需要调用我的东西,另外继承的东西,然后解决延迟。

我已经制作了那个代码模板来实现:

asyncInit: function() {
 var def = new Deferred()
 var domystuff = function() {
    // do my stuff
    def.resolve()
 }
 if (this.inherited) {
  this.inherited().then(function(){
    domystaff()
  }, function(error){
    def.reject(error)
  })
 } else {
    domystaff()
 }
 return def
}

然而,它很长,将它复制并粘贴到每个可能的地方似乎都不是一个好的解决方案。

dojo'本地'是否解决了覆盖/扩展函数返回Deferred的问题,或者复杂的链可以某种方式移动到可以称为单行的外部函数?

0 个答案:

没有答案