Как передать параметр в блоке углового захвата

Хотел посмотреть, возможно ли это, и если да, то как. На ангулярных .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=> ... )
Другие вопросы по тегам