延迟链接 - 当前一次调用以错误结束时调用成功回调

时间:2013-10-18 09:55:44

标签: javascript asynchronous dojo deferred

我有一个小对话框,应在关闭前验证,从输入中获取值,然后调用对话框调用者给出的回调。我已经将处理输入视为带回调参数的函数,因此链中的每个方法都是异步的。

我想要的是,在成功回调调用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成为最终成功回调,如果之前一切都成功了?

1 个答案:

答案 0 :(得分:2)

是的,这是正常行为。你确实已经处理了

中的错误
function(){
  console.log('Object invalid')
  return false
})

你从那里返回一个非错误值(false)。要继续发生错误,请抛出另一个,抛出相同的错误,或者不要将第二个参数用于then,而是使用单独的addErrback。或者将错误处理程序放在.then(lang.hitch(this, this.okCallback))之后,这样它就会处理来自getValues的错误,而不会影响okCallback