摘要:背景最近遇到个面试题点亮绿灯,然后点亮黄灯,然后点亮红灯,然后重复循环。估计是考察相关内容。那如何更好的实现呢实现启动改进函数的貌似写复杂了,函数本身返回的就是个对象,那给方法传递的箭头函数冗余了。
背景
最近遇到个面试题:点亮绿灯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方式实现线程安全类的方法,两种方式一个是锁定阻塞方式,一个是非阻塞方式。本文专注于两种实现方式效率问题。本文是上篇文章的延续,会借用到上...
摘要:有限状态机可以归纳出四个要素现态即当前的状态。但状态模式还有一点需要注意到,当采用子类继承实现多种具体状态的时候,注意控制状态的数量,以免出现子类数量膨胀的现象在使用或等更完整面向对象语言时。 业务代码开发久了,偶尔看看设计模式,总会让自己有一种清新脱俗的感觉。总想把这种感觉记下来,但一想到要先起个恰如其分的标题和开头,就让我有一种百爪挠心的纠结,所以迟迟没有开始。今天起更新我学习设计...
阅读 3774·2023-04-25 19:39
阅读 4115·2021-11-18 13:12
阅读 3869·2021-09-22 15:45
阅读 2676·2021-09-22 15:32
阅读 1126·2021-09-04 16:40
阅读 4212·2019-08-30 14:11
阅读 2107·2019-08-30 13:46
阅读 1792·2019-08-29 15:43