想知道这是否可行,如果可能的话。在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);
答案 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=> ... )