我有一个异步方法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
的问题,或者复杂的链可以某种方式移动到可以称为单行的外部函数?