摘要:背景最近遇到个面试题点亮绿灯,然后点亮黄灯,然后点亮红灯,然后重复循环。估计是考察相关内容。那如何更好的实现呢实现启动改进函数的貌似写复杂了,函数本身返回的就是个对象,那给方法传递的箭头函数冗余了。
背景
最近遇到个面试题:点亮绿灯3s,然后点亮黄灯1s,然后点亮红灯2s,然后重复循环。估计是考察ES6 Promise相关内容。那如何更好的实现呢?
Promise实现function red () { console.log("red") } function green () { console.log("green") } function yellow() { console.log("yellow") } function genPromise(func, timeout) { return () => { func(); return new Promise((resolve) => setTimeout(resolve, timeout)) } } var redPromise = genPromise(red, 2000), greenPromise = genPromise(green, 3000), yellowPromise = genPromise(yellow, 1000); function step() { greenPromise().then(() => yellowPromise()).then(() => redPromise()).then(() => step()) } // 启动 step();改进
step函数的貌似写复杂了,yellowPromise函数本身返回的就是个Promise对象,那给then方法传递的箭头函数冗余了。修改step函数:
function step() { greenPromise().then(yellowPromise).then(redPromise).then(step) } //启动 step();再改进
使用async/wait改进下step函数:
async function step() { await greenPromise(); await yellowPromise(); await redPromise(); step(); } // 启动 step();不止这些...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/98966.html
摘要:在每个事件上,触发器都可以决定触发即清除删除窗口并丢弃其内容,或者启动并清除窗口。请注意,指定的触发器不会添加其他触发条件,但会替换当前触发器。结论对于现代流处理器来说,支持连续数据流上的各种类型的窗口是必不可少的。 showImg(https://segmentfault.com/img/remote/1460000017892799?w=1280&h=720); 前言 目前有许多数...
摘要:前言在上一篇文章中多线程奇幻之旅算法实现线程安全,我们介绍了和方式实现线程安全类的方法,两种方式一个是锁定阻塞方式,一个是非阻塞方式。 前言 在上一篇文章中《Java多线程奇幻之旅——CAS算法实现线程安全》,我们介绍了Synchronized和CAS方式实现线程安全类的方法,两种方式一个是锁定阻塞方式,一个是非阻塞方式。本文专注于两种实现方式效率问题。本文是上篇文章的延续,会借用到上...
摘要:有限状态机可以归纳出四个要素现态即当前的状态。但状态模式还有一点需要注意到,当采用子类继承实现多种具体状态的时候,注意控制状态的数量,以免出现子类数量膨胀的现象在使用或等更完整面向对象语言时。 业务代码开发久了,偶尔看看设计模式,总会让自己有一种清新脱俗的感觉。总想把这种感觉记下来,但一想到要先起个恰如其分的标题和开头,就让我有一种百爪挠心的纠结,所以迟迟没有开始。今天起更新我学习设计...
阅读 3450·2023-04-25 19:39
阅读 3798·2021-11-18 13:12
阅读 3633·2021-09-22 15:45
阅读 2432·2021-09-22 15:32
阅读 715·2021-09-04 16:40
阅读 3725·2019-08-30 14:11
阅读 1882·2019-08-30 13:46
阅读 1562·2019-08-29 15:43