Восстановление от отклоненных обещаний в JS

Я использую собственные обещания (в основном) и пытаюсь восстановиться после ошибки и продолжаю выполнять цепочку обещаний.

По сути, я делаю это:

REST-запрос, чтобы увидеть, существует ли ID.Обратите внимание, что это возвращает отложенный jquery..then (успех означает, что идентификатор существует, поэтому ошибка и остановка) (ошибка означает, что идентификатор не существует, поэтому продолжайте создавать идентификатор).then (создать идентификационную запись и отправить на сервер)

Я возвращаю Promise.resolve () из моей отклоненной функции, что должно привести к выполнению успешной части следующего .then. Это не. Я пробовал это на Chrome и Safari.

Обратите внимание, что первое обещание на самом деле является отложенным запросом, но согласно этой странице (http://api.jquery.com/deferred.then/), deferred.then () возвращает объект обещания. Таким образом, добавление дополнительного .hen должно скрывать родные обещания.

Чтобы было понятнее - вот псевдокод:

promise = $.ajax(url);
promise = promise.then();  // convert to promise 
promise.then(function() { cleanup(); return Promise.reject(); },
    function(err) { return Promise.resolve(); });
.then(function() { createIdentityDetails(); });
.then(function() { sendIdentityDetails(); });

Обратите внимание, что я хочу FAIL, когда ajax возвращает успех, и я хочу продолжить обработку, когда вызов ajax завершился неудачно.

Что происходит, так это то, что функции FAIL для всех последующих частей .hen выполняются. То есть мой возврат Promise.resolve () не работает - что, я думаю, нарушает спецификацию.

Буду признателен за любые отзывы о том, как я могу справиться с ошибками в цепочках длинных обещаний и исправить их.

Большое спасибо за любой совет, который вы можете дать.

постскриптум создание и сбор полной идентификационной информации занимает довольно много времени, поэтому я не хочу этого делать, если идентификатор существует. Поэтому я хочу проверить сначала и быстро провалиться.

p.p.s Мне действительно нравится, как обещания разматывают эти глубоко вложенные цепочки асинхронных обратных вызовов.

Ответы на вопрос(4)

Ваш ответ на вопрос