分享更有价值
被信任是一种快乐

JavaScript之怎么手写asyncAdd方法

文章页正文上

这篇文章主要介绍了JavaScript之怎么手写asyncAdd方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript之怎么手写asyncAdd方法文章都会有所收获,下面我们一起来看看吧。在掘金上发现一道既简单但个人觉得还挺有意思的一道题,题目如下:这里先放置最终结论:只能修改 sum 部分的内容,sum 可接收任意长度的参数sum 中只能通过 asyncAdd 实现加法计算sum 中需要处理异步逻辑,需要使用 Promise需要优化 sum 方法的计算时间下面是分别通过对代码的不同部分进行分析,获取到的相关的信息。最直观的方式就是通过上述的文字描述部分,可以很容易知道题目具体要求:实现 sum 函数,即只能修改 sum 部分的内容不能直接使用加法(+),通过 asyncAdd 实现加法优化 sum 方法的计算时间从上述内容来看,最明显的就是 setTimeoutcb 了,其实这不难理解因为在 asyncAdd 中使用了 setTimeout 只能通过回调函数 cb 将本次计算结果返回出去,那其中的第一个参数 null 代表什么呢?其实可以认为它是一个错误信息对象,如果你比较了解 node 的话,就会知道在 node 中的异步处理的回调函数通常第一个参数就是错误对象,用于传递给外部在发生错误时自定义后续执行逻辑等。一句话: cb 函数会接收 错误对象 和 计算结果 作为参数传递给外部。从上述的这部分来看,sum 方法的 返回值 肯定是一个 promise 类型的,因为最前面明显的使用了 await sum(...) 的形式。另外 total 函数返回值也必然是一个 promise 类型,因为整个 total 函数被定义为了一个 async 异步函数,可点击此处查看详细内容。一句话:sum 需要返回 promise 类型的值,即 sum 一定会使用到 promise,并且从 sum(1,2,3,4,5,6,4) 可知 sum 可接收任意长度的参数。实现思路如下:考虑到外部参数长度不固定,使用剩余运算符接收所有传入的参数考虑到 asyncAdd 中的异步操作,将其封装为 Promise 的实现,即 caculate 函数考虑到 asyncAdd 实际只能一次接收两个数字进行计算,使用循环的形式将多个参数分别传入考虑到通过循环处理异步操作的顺序问题,使用 async/await 来保证正确的执行顺序,且 async 函数的返回值正好符合 sumPromise 类型的要求具体代码如下:caculate 函数可抽离到 sum 函数外层asyncAdd 函数的回调函数没必要抽离,因为它依赖的参数和外部方法太多其实你仔细观察 total 方法,其中 sum 调用了两次,而且参数还是一模一样的,目的就是提示你在第二次计算相同内容时结果直接 从缓存中获取,而不是在通过异步计算。以下只是一个简单的缓存方案的实现,不必过于纠结,具体实现如下:关于“JavaScript之怎么手写asyncAdd方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java免费云主机、域名Script之怎么手写asyncAdd方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注云技术行业资讯频道。

相关推荐: html/css中tt指的是什么

这篇“html/css中tt指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“html/css中tt指的是什么”文章吧。 在html/cs…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

登录

找回密码

注册