SOURCE

// const promise = new Promise((resolve, reject) => {
//     console.log(1);
//     resolve();
//     console.log(2);
// })
// // promise新建过后立即执行  先输出12
// promise.then(() => {
//     console.log(3);
// })
// // promise.then()内部的代码在当次事件循环的结尾立即执行  所以先输出4 再输出3
// console.log(4);


// const promise = new Promise((resolve, reject) => {
//     resolve('success1');
//     reject('error');
//     resolve('success2');
//     // promise状态一旦改变就不会在变   所以   reject('error'); resolve('success2');都不会执行
// });
// promise.then((res) => {
//     console.log('then:', res);
// }).catch((err) => {
//     console.log('catch:', err);
// })

// Promise.resolve(1)
// // 如果 Promise.resolve()方法的参数是一个值
//   .then(3)
//   .then(Promise.resolve(4))
//   .then(console.log)

// 红路灯交替亮

function red() {
    console.log('red');
}
function green() {
    console.log('green');
}
function yellow() {
    console.log('yellow');
}

var light = function (timmer, cb) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            cb();
            resolve();
        }, timmer);
    });
};

var step = function () {
    Promise.resolve().then(function () {
        return light(3000, red);
    }).then(function () {
        return light(2000, green);
    }).then(function () {
        return light(1000, yellow);
    }).then(function () {
        step();
    });
}

step();
console 命令行工具 X clear

                    
>
console