编辑代码

// 如果一切顺利,车俩就开始跑了...
function run() {
    console.log("car is running...")
    setInterval(() => {
        console.log("very very fast..", new Date().toLocaleTimeString())
    }, 1000)
}
// 挂挡
function engageGear() {
    return new Promise( (resolve, reject) => {
        setTimeout( () => {
            resolve("engaged to D.")
        }, 3000) // 是一个老旧的自动挡车,挂D挡不容易...
    })
}
// 引擎点火
function startEngine() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("engine started!")
        }, 4000) // 这是个05年的车,比较老,所以点火比较费劲儿
    })
}
// 开车, 开车前需要点火启动车辆吧
async function drive() {
    console.log(1, "strating the engine...")
    const res1 = await startEngine() // 等待车辆点火启动
    console.log(2, res1) // 点火完成
    const res2 = await engageGear() // 点火完后是不是需要挂挡
    console.log(3, res2) // 挂挡
    clearTimeout()
    run() // 车就开始跑了
}
// 开车(开车之前有很多操作,尤其是老车)
drive()