如何在angular catch块中传递参数

时间:2017-10-19 15:35:54

标签: javascript angularjs

想知道这是否可行,如果可能的话。在Angular的.catch块上,我希望得到handleError回调并传递一个id。但无论函数被调用,我都知道它是因为承诺是如何形成的。但我希望有一种方法可以在不事先调用函数的情况下传递参数。

//controller
function handleError(id) {
  showErrorMessage(id);
}

callFactory
  .then(update)
  .catch(handleError)
  .finally(clearLoader);

// would like to use something like this.

callFactory
  .then(update)
  .catch(handleError(2)) //this gets called regardless
  .finally(clearLoader);

1 个答案:

答案 0 :(得分:2)

.catch的第一个参数始终是抛出的异常。您可以通过闭包方法实现您正在寻找的东西。类似的东西:

function handleError(id) {
  return function(err) {
    // access to both err and id
}

另外,您可以throw .catch中的ID,然后下一个catch

.catch(err=> { throw id })
.catch(id=> ... )