[Easy] LeetCode JS 30 - 2723. Add Two Promises
March 5, 2024
LeetCode 30 Days of JavaScript
This question is from LeetCode's 30 Days of JavaScript Challenge
2723. Add Two PromisesQuestion Prompt
Given two promises promise1
and promise2
, return a new promise. promise1
and promise2
will both resolve with a number. The returned promise should resolve with the sum of the two numbers.
// Example 1
Input:
promise1 = new Promise(resolve => setTimeout(() => resolve(2), 20)),
promise2 = new Promise(resolve => setTimeout(() => resolve(5), 60))
Output: 7
Explanation: The two input promises resolve with the values of 2 and 5 respectively. The returned promise should resolve with a value of 2 + 5 = 7. The time the returned promise resolves is not judged for this problem.
// Example 2:
Input:
promise1 = new Promise(resolve => setTimeout(() => resolve(10), 50)),
promise2 = new Promise(resolve => setTimeout(() => resolve(-12), 30))
Output: -2
Explanation: The two input promises resolve with the values of 10 and -12 respectively. The returned promise should resolve with a value of 10 + -12 = -2.
Solutions
Looking to practice more questions like these? We recommend GreatFrontEnd, the best platform for honing your frontend interview skills!
To tackle this, we can use Promise.all()
. Promise.all()
takes an array of promises. It returns a new promise that resolves when all input promises have resolved. The resolved value of the new promise is an array containing the resolved values of the input promises in the same order.
There are two main ways to implement it. First way is using then
. By using this way, Promise.all([promise1, promise2])
creates a new promise that waits for both input promises to resolve.
The .then()
handler receives an array ([result1, result2]
) containing the resolved values. We use destructuring to extract them. We return the sum, result1 + result2
.
var addTwoPromises = async function (promise1, promise2) {
return Promise.all([promise1, promise2]).then(([result1, result2]) => {
return result1 + result2;
});
};
The second way is using async/await
. An async
function always returns a promise. The await
keyword inside an async
function pauses execution until the awaited promise resolves or rejects.
To do it this way, we need to declare addTwoPromises
as an async
function. Within the async function, the await Promise.all([promise1, promise2])
ensures both promises resolve before continuing.
After getting result1
and result2
, we return the sum.
var addTwoPromises = async function (promise1, promise2) {
const [result1, result2] = await Promise.all([promise1, promise2]);
return result1 + result2;
};