Promise en JavaScript

12.10.19

Promise en javascript se usa para operaciones asincrónicas
Por ejemplo

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;
});

En resolve, pasamos los datos al éxito y serán aceptados en el método de then. En reject, pasamos los datos por error y serán aceptados en el método catch. Finally método funcionará al final de la cadena de todos modos.

El método Promise.all (iterable) devuelve una promesa que se cumplirá cuando se cumplan todas las promesas aprobadas cuando se cumple un argumento enumerado o se rechaza cualquiera de las promesas transferidas.

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