Когда обещание будет разрешено / отклонено, оно вызовет его обработчик успеха / ошибки:
var promiseB = promiseA.then(function(result) {
// do something with result
});
Метод then
также возвращает обещание: promB, которое будет разрешено / отклонено в зависимости от возвращаемое значение из обработчика успеха / ошибки из обещания.
Есть три возможных значения, которые могут быть возвращены обработчикам успеха / ошибок, которые повлияют на результат результата:
1. Return nothing --> PromiseB is resolved immediately,
and undefined is passed to the success handler of promiseB
2. Return a value --> PromiseB is resolved immediately,
and the value is passed to the success handler of promiseB
3. Return a promise --> When resolved, promiseB will be resolved.
When rejected, promiseB will be rejected. The value passed to
the promiseB's then handler will be the result of the promise
Вооружено это понимание, вы можете понять следующее:
promiseB = promiseA.then(function(result) {
return result + 1;
});
Затем вызов немедленно возвращает обещаниеB. Когда обещание будет разрешено, оно передаст результат, чтобы обещать успешный обработчик. Поскольку возвращаемое значение является результатом promA + 1, обработчик успеха возвращает значение (вариант 2 выше), так что обещаниеB будет немедленно устранено, а обработчик успеха пообещания будет передан с обещанием результата + 1.