Promise в JavaScript

12.10.19

Promise ( или промис ) в javascript используется для асинхронных операций

Например

function getInfo(url){

    return new Promise((resolve, reject) => {
       
        $.ajax(url)
            .done(response => {
                	resolve(response);
                })
            .fail((xhr, textStatus) => {

                reject(textStatus);
                 
            });
                  
    });
}

let loading = true;

getInfo('file1.txt')
.then( data => {
 	$('.container').append('<p>' + data + '</p>')
   return getInfo('file2.txt');
})
.then( data => {
   return getInfo('file3.txt');
})
.then(() => {
    console.log('ok');
})
.catch(error => {
    console.log('something went wrong: ' + error);
})
.finally(() => {
	 loading = false;
});

В resolve передаем данные при успехе и они будут приняты в методе then. В reject передаем данные при ошибке и они будут приняты в методе catch. Метод finally отработает в конце цепочки в любом случае.

Метод Promise.all(iterable) возвращает обещание, которое выполнится тогда, когда будут выполнены все обещания, переданные в виде перечисляемого аргумента, или отклонено любое из переданных обещаний.

let p1 = new Promise((resolve, reject) => {
	setTimeout(() => {

		resolve('some data');

	}, 500);
});

let p2 = Promise.resolve(5);

let p3 = new Promise((resolve, reject) => {
	setTimeout(() => {

		resolve('other data');

	}, 1000);
});

Promise.all([p1, p2, p3]).then(values => { 
  console.log(values); 
});

blog comments powered by Disqus