Как передать параметр в блоке углового захвата
Хотел посмотреть, возможно ли это, и если да, то как. На ангулярных .catch
Блок, я хочу получить обратный вызов handleError и передать идентификатор. но независимо от того, как вызывается функция, я знаю это из-за того, как формируется обещание. но я надеялся, что есть способ передать параметр без предварительного вызова функции.
//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 ответ
Решение
Первый аргумент .catch
всегда будет исключением, которое было брошено. Вы могли бы, вероятно, достичь того, что вы ищете, с помощью метода закрытия. Что-то вроде:
function handleError(id) {
return function(err) {
// access to both err and id
}
С другой стороны, вы могли бы throw
идентификатор в .catch
, то это будет подобрано следующим catch
.catch(err=> { throw id })
.catch(id=> ... )