说在前面
🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。
题目描述
给定两个 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 对象
解题思路
接受两个Promise作为参数,并返回一个新的Promise。这个新的Promise在两个输入Promise都成功解决后,将它们的结果相加并解决为最终的结果。
具体来说,代码中的addTwoPromises函数使用Promise.all方法来等待两个输入Promise都完成。一旦两个Promise都成功解决,Promise.all返回一个包含两个Promise结果的数组。然后,通过then方法注册的回调函数,将两个结果相加,并使用resolve方法解决新的Promise,将相加的结果作为最终结果。
AC代码
/** * @param {Promise} promise1 * @param {Promise} promise2 * @return {Promise} */ var addTwoPromises = async function(promise1, promise2) { return new Promise(resolve=>{ Promise.all([promise1,promise2]).then(res=>{ resolve(res[0] + res[1]); }) }); }; /** * addTwoPromises(Promise.resolve(2), Promise.resolve(2)) * .then(console.log); // 4 */
公众号
关注公众号『前端也能这么有趣
』,获取更多有趣内容。
说在后面
🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣
』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。