Skip to content

使用Promise实现红绿灯交替重复亮 #46

Open
@TieMuZhen

Description

@TieMuZhen

题目:红灯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()
    })
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions