Cadeias de Promises em JavaScript
Suponha que temos a seguinte promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
Ao finalizar a promise, vamos exibir seu resultado no console:
promise.then(
function(result) {
console.log(result); // exibirá 'string'
}
)
Agora, em vez de exibir o resultado imediatamente,
vamos modificá-lo de alguma forma e retorná-lo via return:
promise.then(
function(result) {
return result + '!';
}
);
Neste caso, podemos aplicar outro then ao resultado do nosso
then, criando assim uma cadeia de métodos. Dessa forma,
o resultado do próximo método receberá
o que foi retornado via return pelo anterior:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // exibirá 'string!'
}
);
Assim, é possível construir uma cadeia de qualquer comprimento:
promise.then(
function(result) {
return result + '1';
}
).then(
function(result) {
return result + '2';
}
).then(
function(result) {
return result + '3';
}
).then(
function(result) {
console.log(result); // exibirá 'string123'
}
);