兩個 Promise 對象相加
- 題目
- 題解
題目
給定兩個 promise
對象 promise1
和 promise2
,返回一個新的 promise
。promise1
和 promise2
都會被解析為一個數字。返回的 Promise
應該解析為這兩個數字的和。
示例 1:
輸入:
promise1 = new Promise(resolve => setTimeout(() => resolve(2), 20)),
promise2 = new Promise(resolve => setTimeout(() => resolve(5), 60))
輸出:7
解釋:兩個輸入的Promise
分別解析為值2
和5
。返回的 Promise 應該解析為2 + 5 = 7
。返回的Promise
解析的時間不作為判斷條件。
示例 2:
輸入:
promise1 = new Promise(resolve => setTimeout(() => resolve(10), 50)),
promise2 = new Promise(resolve => setTimeout(() => resolve(-12), 30))
輸出:-2
解釋:兩個輸入的 Promise 分別解析為值10
和-12
。返回的Promise
應該解析為10 + -12 = -2
。
提示:
promise1
和promise2
都是被解析為一個數字的promise
對象
題解
/*** @param {Promise} promise1* @param {Promise} promise2* @return {Promise}*/var addTwoPromises = async function(promise1, promise2) {// p1 和 p2 都是 Promise 對象,使用 async + await 等待結果// 步驟相當于 return await promise1 + await promise2;// 使用 Promise.all 并行執行多個 Promiseconst [p1, p2] = await Promise.all([promise1, promise2]);return p1 + p2;
};/*** addTwoPromises(Promise.resolve(2), Promise.resolve(2))* .then(console.log); // 4*/