# Цепочки промисов в JavaScript

Пусть у нас есть следующий промис:

`let promise = new Promise(function(resolve, reject) { setTimeout(function() { resolve('string'); }, 3000); });`

По завершению промиса выведем его результат в консоль:

`promise.then( function(result) { console.log(result); // выведет 'string' } )`

Давайте теперь не будем сразу выводить результат, а как-то изменим его и вернем через `return`:

`promise.then( function(result) { return result + '!'; } );`

В этом случае мы можем к результату нашего `then` применить еще один `then`, создав тем самым цепочку методов. При этом в результат следующего метода будет попадать то, что вернул через `return` предыдущий:

`promise.then( function(result) { return result + '!'; } ).then( function(result) { console.log(result); // выведет 'string!' } );`

Таким образом можно построить цепочку какой-угодно длины:

`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); // выведет 'string123' } );`
← →
↑
en ru