El Método Promesa.all() es en realidad un método del objeto Promise (que también es un objeto en JavaScript utilizado para manejar todas las operaciones asincrónicas), que toma una matriz de promesas (un iterable) como entrada. Devuelve un solo Promesa que se resuelve cuando todas las promesas pasaron como iterables, se han resuelto, o cuando el iterable no contiene promesas. De forma sencilla, si alguna de las promesas pasadas se rechaza, el Promesa.todo() El método rechaza de forma asincrónica el valor de la promesa que ya ha sido rechazada, independientemente de si las otras promesas se han resuelto o no.
Sintaxis:
Promise.all( iterable )>
Parámetros: Este método acepta un solo parámetro. iterable que requiere una serie de promesas o una matriz normal que contiene algunos objetos.
parámetros predeterminados de java
Valores de retorno: Sigue algunas reglas para devolver una única promesa:
- Si el argumento pasado está vacío, devuelve una Promesa que ya está resuelto .
- Si el iterable pasado no contiene promesas, devuelve una Promesa que se resuelve asincrónicamente .
- Para todos los demás casos, devuelve una Promesa pendiente.
Cumplimiento y Rechazo del Método Promise.all():
Cumplimiento: La promesa devuelta se cumple,
- Si el iterable pasado está vacío, entonces este método devuelve una promesa sincrónicamente que ya está resuelta.
- Si se cumplen todas las promesas pasadas, las Promesas devueltas se cumplen de forma asincrónica.
- Aquí, la ejecución exitosa de este método en particular depende totalmente de que todas las promesas se ejecuten con éxito.
Rechazo: Si alguna de las promesas pasadas se rechaza, entonces este método rechaza el valor de esa promesa, independientemente de que las otras promesas se hayan resuelto o no. En otras palabras, si alguna promesa no se ejecuta, el método Promise.all() devolverá un error y no tendrá en cuenta si otras promesas se cumplieron con éxito o no.
Los siguientes ejemplos ilustran el método JavaScript Promise.all():
Ejemplo 1: El método Promise.all() espera cumplimiento
javascript
p1 = Promise.resolve(50);> p2 = 200> p3 =>new> Promise(>function> (resolve, reject) {> >setTimeout(resolve, 100,>'geek'>);> });> Promise.all([p1, p2, p3]).then(>function> (values) {> >console.log(values);> });> |
>
>
dibujar rectángulo gimpProducción
[ 50, 200, 'geek' ]>
Ejemplo 2: Aquí el método Promise.all() se resuelve después de 2000 ms y la salida se muestra como una matriz.
javascript
// Simple promise that resolves> // after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(`Completed>in> ${t}`)> >}, t)> >})> }> // Resolving a normal promise> tOut(1000).then(result =>console.log(resultado +>' '>))> // Completed in 1000> // Promise.all> Promise.all([tOut(1000), tOut(2000)])> >.then(result =>console.log(resultado))> |
>
>
Producción:
Completed in 1000 Completed in 1000, Completed in 2000>
Aquí, Promesa.todo() El método es el orden de las promesas mantenidas. La primera promesa de la matriz se resolverá en el primer elemento de la matriz de salida, la segunda promesa será un segundo elemento de la matriz de salida. etcétera.
Ejemplo 3: Aquí está , el Promesa.todo() El método espera hasta que se resuelvan todas las promesas.
javascript
selección de tabla múltiple sql
// Simple promise that resolves after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(`Completed>in> ${t}`)> >}, t)> >})> }> // Array contains some time duration> const durations = [1000, 2000, 3000]> const promises = []>// Empty array> durations.map((duration) =>{> >// Calling the async function timeout(), so> >// at this point the async function has started> >// and enters the 'pending' state> >// pushing the pending promise to an array.> >promises.push(tOut(duration))> })> console.log(promises)> // Passing an array of pending promises to Promise.all> // Promise.all will wait till all the promises get resolves> // and then the same gets resolved.> Promise.all(promises).then(response =>console.log(respuesta))> // It prints after previous promises gets resolved> // ['Completed in 1000', 'Completed in 2000', 'Completed in 3000']> |
>
>
Producción :
[object Promise], [object Promise], [object Promise] . . . (gap between previous and last promises) . . Completed in 1000, Completed in 2000, Completed in 3000>
Ejemplo 4: Como se muestra en este ejemplo, si una de las promesas falla, el resto de las promesas fallan y el resultado se mostrará en la consola en forma de error. Entonces Promesa.todo() El método es rechazado.
javascript
// Promise that resolves after a given time> const tOut = (t) =>{> >return> new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >if> (t === 2000) {> >reject(`Rejected>in> ${t}`)> >}>else> {> >resolve(`Completed>in> ${t}`)> >}> >}, t)> >})> }> const durations = [1000, 2000, 3000]> // Array contains some time durations> const promises = []>//empty array> durations.map((duration) =>{> >promises.push(tOut(duration))> >// Pushing durations in the promises array> })> // Passing an array of pending promises to Promise.all> Promise.all(promises).then(response =>console.log(respuesta))> >// Promise.all cannot be resolved, as one of the> >// promises passed, got rejected.> >.>catch>(error =>console.log(`::Error:: ${error}`))> // Promise.all throws an error.> |
>
>
sistema de archivos linux
Producción :
Error Rejected in 2000>
Ejemplo-5: En este ejemplo, usaremos alguna función de temporizador (particularmente la función setTimeout) que tiene diferentes temporizadores y se escribirán dentro de diferentes promesas y, además, esas promesas se pasarán dentro de los métodos Promise.all() para obtener el resultado.
JavaScript
let first_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 1 second'>);> >}, 1000);> });> let second_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 2 seconds'>);> >}, 2000);> });> let third_promise =>new> Promise((resolve, reject) =>{> >setTimeout(() =>{> >resolve(>'Resolved First after 3 seconds'>);> >}, 3000);> });> try> {> >let result = Promise.all([first_promise, second_promise, third_promise]);> >result.then((data) =>console.log(datos));> }>catch> (error) {> >console.log(error);> }> // This code is contributed by Aman Singla...> |
>
>
Producción:
[ 'Resolved First after 1 second', 'Resolved First after 2 seconds', 'Resolved First after 3 seconds' ]>
Navegadores compatibles:
Los navegadores soportados por Promesa de JavaScript.all() Los métodos se enumeran a continuación:
- Google Chrome 32 y superior
- Borde 12 y superior
- Firefox 29 y superior
- Ópera 19 y superior
- Safari 8 y superior
- Internet Explorer no es compatible