Promise.then()

Promise.then() - повертає Promise який є результатом виконання.

Синтаксис:

Promise.then( onFulfilled onRejected , onProgress );

Параметри:

Promise - об'єкт Promise.

onFulfilled - . функція яка викликається  коли Promise виконується. Ця функція приймає лише один параметр value.

onRejected - не обов'язково вказувати. Функція яка викликається коли Promise провалився (не виконався по певним причинам). Ця функція приймає один параметр reason.

onProgress - не обов'язково вказувати. Функція яка виконується коли Promise в процесі роботи. Не всі браузери підтримують параметр onProgress.

Опис:

then() метод об'єкту Promise який повертає об'єкт Promise який є результатом виконання функції onFulfilled.

Метод приймає два параметра (у деяких браузерах три): функції зворотного виклику для випадків успіху і провалу Promise.

Приклад:

var p = new Promise(function(result, error, onprogress){ var xhr = new XMLHttpRequest(); xhr.open("get","", true); xhr.onload=function(){ result(this.response); } xhr.onerror=function(e){error(e);} xhr.onprogress=function(e){progress(e.loaded);} xhr.send(null); }); p.then(function(a){alert(a);}, function(er){alert("Помилка: "+er);}, function(b){alert(b);});

Так як then i catch повертає об'єкт Promise це дає можливість бути зв'язаним в ланцюжок:

function getJson(url){ return new Promise(function(resolve, reject){ var x= new XMLHttpRequest(); x.open("get", url, true); x.onload=function(){ resolve(this.response); }; x.onerror=function(){reject(new Error("Error AJAX"));} x.send(); }); } getJson("test.json").then(function(a){return JSON.parse(a);}).catch(function(){alert("не вдалося перетворити отримані дані в JSON");}).then(function(b){"Отримано. result.name: "+alert(b.name);});