我有一个小对话框,应在关闭前验证,从输入中获取值,然后调用对话框调用者给出的回调。我已经将处理输入视为带回调参数的函数,因此链中的每个方法都是异步的。
我想要的是,在成功回调调用getValues时调用isValid,成功回调调用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的final then(),而不调用adn getValues()。
这是正常行为吗?如何使延迟chaing成为最终成功回调,如果之前一切都成功了?
答案 0 :(得分:2)
是的,这是正常行为。你确实已经处理了
中的错误function(){
console.log('Object invalid')
return false
})
你从那里返回一个非错误值(false
)。要继续发生错误,请抛出另一个,抛出相同的错误,或者不要将第二个参数用于then
,而是使用单独的addErrback
。或者将错误处理程序放在.then(lang.hitch(this, this.okCallback))
之后,这样它就会处理来自getValues
的错误,而不会影响okCallback
。