我有一个小对话框,应该在关闭之前验证,从输入中获取值,然后调用对话框调用者给出的回调。我已经将输入处理实现为采用回调参数的函数,因此链中的每个方法都是异步的。
我想要的是调用isValid,成功回调调用getValues,成功回调调用okCallback。这是我的代码:
var self = this
this.isValid().then(lang.hitch(this, this.getValues), function(){
console.log('Object invalid')
return false
}).then(function(item) {
self.okCallback(item)
})
问题是,即使 isValid() 以错误结束,调用 okCallback 的最终 then() 也会被调用,而 getValues() 没有被调用。
这是正常行为吗?如何进行延迟链接,以便仅在之前的所有操作都成功的情况下才调用最终的成功回调?