红灯3秒亮一次,黄灯2秒亮一次,绿灯1秒亮一次;如何让三个灯不断交替重复亮灯?(用Promise实现)

        function red() {
console.log('red');
}
function green() {
console.log('green');
}
function yellow() {
console.log('yellow');
} function light(cb, timer) {
return new Promise(resolve => {
setTimeout(() => {
cb();
resolve()
}, timer);
})
} function step() {
Promise.resolve().then(() => {
return light(red, 3000)
}).then(() => {
return light(green, 2000)
}).then(() => {
return light(yellow, 1000)
}).finally(() => {
return step()
})
}

使用Promise实现红绿灯交替重复亮的更多相关文章

  1. promise 实现红绿灯

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 一道关于Promise应用的面试题

    题目:红灯三秒亮一次,绿灯一秒亮一次,黄灯2秒亮一次:如何让三个灯不断交替重复亮灯?(用Promse实现) 三个亮灯函数已经存在: function red(){ console.log('red') ...

  3. 关于Promise的一个案例

    题目:红灯三秒亮一次,绿灯一秒亮一次,黄灯2秒亮一次:如何让三个灯不断交替重复亮灯?(用Promise实现) 解答思路一: function red(){ console.log('red'); } ...

  4. Promise面试题

    题目一 const promise = new Promise((resolve, reject) => { console.log(1); resolve(); console.log(2); ...

  5. 用promise和async/await分别实现红绿灯

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. JVM总结-synchronized

    在 Java 程序中,我们可以利用 synchronized 关键字来对程序进行加锁.它既可以用来声明一个 synchronized 代码块,也可以直接标记静态方法或者实例方法. 当声明 synchr ...

  7. angular中的$q.defer()服务异步处理

    jquery和angular都有defer服务,我暂以angular为例谈谈我的理解,最后并附上jquery的阮一峰总结的defer. 以我目前项目的部分代码为例说明为什么要用deferred. fu ...

  8. paper 53 :深度学习(转载)

    转载来源:http://blog.csdn.net/fengbingchun/article/details/50087005 这篇文章主要是为了对深度学习(DeepLearning)有个初步了解,算 ...

  9. R语言编程艺术# 数据类型向量(vector)

    R语言最基本的数据类型-向量(vector) 1.插入向量元素,同一向量中的所有的元素必须是相同的模式(数据类型),如整型.数值型(浮点数).字符型(字符串).逻辑型.复数型等.查看变量的类型可以用t ...

随机推荐

  1. Interface(接口分享)第一节

    一.接口初探 有时候我们传入的参数可能会包含很多的属性,但是编译器只会检查那些必须的属性是否存在,以及类型是否匹配,而咱们要讲的接口其实就是用来描述下面这个例子里的结构,对于接口传入的数据咱们只关心它 ...

  2. K-近邻算法kNN

    K-近邻算法(k-Nearest Neighbor,简称kNN)采用测量不同特征值之间的距离方法进行分类,是一种常用的监督学习方法,其工作机制很简单:给定测试样本,基于某种距离亮度找出训练集中与其靠近 ...

  3. centos6 virbox安装

    yum install kernel-devel yum update kernel* wget http://download.virtualbox.org/virtualbox/debian/or ...

  4. AHB SRAM控制器设计

  5. 关于多线程--网络编程 -- 注解反射的一点笔记(JAVA篇)

    一 . 线程 java开启一个线程的方法(三种) 方法一:继承Thread类并New一个线程对象 步骤: 1):定义一个类A继承于Java.lang.Thread类. class TestThread ...

  6. 【原创】Linux虚拟化KVM-Qemu分析(六)之中断虚拟化

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  7. netcore一键部署到linux服务器以服务方式后台运行

    @font-face { font-family: octicons-link; src: url("data:font/woff;charset=utf-8;base64,d09GRgAB ...

  8. 从执行上下文角度重新理解.NET(Core)的多线程编程[1]:基于调用链的”参数”传递

    线程是操作系统能够进行运算调度的最小单位,操作系统线程进一步被封装成托管的Thread对象,手工创建并管理Thread对象已经成为了所能做到的对线程最细粒度的控制了.后来我们有了ThreadPool, ...

  9. zabbix、Cacti、Nagios、open-falcon、Ganglia、Prometheus开源监控比较

    Zabbix 一个基与WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案(普遍) 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...

  10. npm,pm2等相关知识的学习

    现在开始接手node端测试,有好多知识点,比如启动进程的命令,查看进程的命令都不是很清晰,现在具体来学习下- npm由来 前端最大的社区是GitHub,大家在这里分享代码,讨论问题,收集学习资源.大家 ...