o then
o método devolve um Promise
, o que permite encadear o método.
Se a função passada como manipulador then
retorna Promise
, equivalente a Promise
será exposto para a subseqüente then
no método da cadeia. O trecho abaixo simula o código assíncrono com a função setTimeout
.,
Quando um valor é devolvido de dentro de um id
handler, ele irá efetivamente retornarPromise.resolve(<value returned by whichever handler was called>)
.
A then
call irá devolver uma promessa rejeitada se a função lançar um erro ou devolver uma promessa rejeitada.
em todos os outros casos, uma promessa de resolução é devolvida. No exemplo seguinte, o primeiro id
irá retornar42
embrulhado em uma promessa de resolução, mesmo que a promessa anterior na cadeia foi rejeitada.,
na prática, é muitas vezes desejável pegar promessas rejeitadas em vez de usar then
‘s dois casos de sintaxe, como demonstrado abaixo.
Você também pode usar o chaining para implementar uma função com uma API baseada em promessas em cima de outra tal função.
Se onFulfilled
retorna uma promessa, o valor de retorno de then
será resolvido/rejeitado pela promessa.