2017-10-19 26 views
1

想看看这是否可能,如果是的话如何。在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

使用拿起一个函数工厂,返回handleError'的'定制版'catch'可以打电话。 – zero298

+0

是的,这就是我目前拥有的。只是好奇,如果上述是可能的。 – alphapilgrim

回答

2

.catch的第一个参数总是将是抛出的异常。你可能可以用闭包方法实现你正在寻找的东西。喜欢的东西:

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

Altertnatively,你可以throw中的id .catch,那么这将是在下一catch

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

关闭FTW!谢谢,奥斯汀。 – alphapilgrim