- Multiple promises
- Running multiple promises is possible.
- Success/failed trigger options
-
- All success:
Promise.all()
- All promises must be fulfilled to be succesful
- Success parameter passed is an array of individual success promise value
- It's not succesful as soon as the first error is found
- Error parameter passed is the first failed promise value
- Any success/failed:
Promise.race()
- Any 1 of the promises produce outcome, whether it's succesfull or failed:
- Success/failed parameter passed is that first success/failed value
- Syntax
- The promises are still written normal way individually.
-
const promise1 = new Promise(promiseFunction1);
const promise2 = new Promise(promiseFunction2);
const promise3 = new Promise(promiseFunction3);
- The
then
statement becoming:
-
Promise.all(promiseArray).then(successFunction);
Promise.race(promiseArray).then(successFunction);
- Array extended:
-
Promise.all([promise1, promise2, promise3]).then(successFunction);
Promise.race([promise1, promise2, promise3]).then(successFunction);
Promise.all()
- Example: Recording 3 videos. All 3 must be recorded.
- Scenario: All video recorded
-
const record1 = new Promise((resolve,reject) => {resolve()});
const record2 = new Promise((resolve,reject) => {resolve()});
const record3 = new Promise((resolve,reject) => {resolve()});
Promise.all([record1, record2, record3]).then((messages) => {
console.log();
console.log(messages);
}, (error) => {
console.log();
console.log(error);
});
- Scenario: 1 of the video not recorded:
-
const record1 = new Promise((resolve,reject) => {resolve()});
const record2 = new Promise((resolve,reject) => {reject()});
const record3 = new Promise((resolve,reject) => {resolve()});
- Scenario: none of the videos recorded:
-
const record1 = new Promise((resolve,reject) => {reject()});
const record2 = new Promise((resolve,reject) => {reject()});
const record3 = new Promise((resolve,reject) => {reject()});
Promise.race()
- Example: Recording 3 videos. Only need 1 to be recorded.
- Scenario: All videos recorded, but 2 resolved first.
-
const record1 = new Promise((resolve,reject) => {setTimeout(resolve, 500, )});
const record2 = new Promise((resolve,reject) => {setTimeout(resolve, 100, )});
const record3 = new Promise((resolve,reject) => {setTimeout(resolve, 800, )});
Promise.race([record1, record2, record3]).then((message) => {
console.log();
console.log(message);
}, (error) => {
console.log();
console.log(error);
});
- Scenario: Some recorded, some failed. But 2 failure comes first
-
const record1 = new Promise((resolve,reject) => {setTimeout(resolve, 500, )});
const record2 = new Promise((resolve,reject) => {setTimeout(reject, 100, )});
const record3 = new Promise((resolve,reject) => {setTimeout(resolve, 800, )});
- Scenario: Some recorded, some failed. But 2 failure comes first
-
const record1 = new Promise((resolve,reject) => {setTimeout(resolve, 500, )});
const record2 = new Promise((resolve,reject) => {setTimeout(reject, 100, )});
const record3 = new Promise((resolve,reject) => {setTimeout(resolve, 800, )});