第 182 题:实现一个异步求和函数
提供一个异步 add
方法如下,需要实现一个 await sum(...args)
函数:
function asyncAdd(a, b, callback) { setTimeout(function () { callback(null, a + b); }, 1000); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
不晓得是不是这个意思哦 ,可以传入参数列表
大佬们,这个是不是会快一点,Promise.all如果两组同时进行的话,其中一组快,一组慢的话就会出现快的那组等待慢组执行完才能去跟后面的相加,但是这块时间本来可以利用起来跟后面的先进行计算的,Promise.all有点浪费多余时间了吧,求大佬指点!
简化:两数之和
我们先来简单的实现一个异步两数之和函数
加深:多数之和
上面我们实现了两数之和,然后扩展到多数之和喃?
提到数组求和问题,我们首先想到的是
reduce
callback
函数接收4个参数:acc
:累计器cur
:当前值idx
: 当前索引arr
:源数组其中,
initialValue
可选,initialValue
:acc
取值为initialValue
,cur
取数组中的第一个值acc
取数组中的第一个值,cur
取数组中的第二个值关于本题:来自@champkeh
设置初始值为
Promise.resolve(0)
,经历5
次求和:但这存在一个耗时较长的问题,我们可以计算下时间:
也就是说,我们每次求和都会花费 1s,串行异步求和,这显然不是最优的
优化:使用 Promise.all
我们可以两两一组,使用
Promise.all
求和,再把和两两一组继续求和…..,知道只剩余一个就是最终的结果