延迟链接 - 然后在上一个调用完成但出现错误时调用成功回调



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

我想要的是调用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)
})

问题是,调用 okCallback 的最终 then() 即使 isValid() 以错误结束,并且没有调用 getValues()。

这是正常行为吗?如何使延迟追逐,以便只有在之前的所有内容都成功的情况下才会调用最终的成功回调?

是的,这是正常行为。您已经处理了 中的错误

function(){
  console.log('Object invalid')
  return false
})

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

最新更新