不懂就问,js中异步综合应用,为什么这个立即就打出来了

function cc(i){
    console.log(i);
}

function bb(i){
    return new Promise ((resolve)=>{
        setTimeout(cc(i),10000)
        resolve()
    })
}

async function aa(){
    for(var i =0; i<10;){
        //console.log(i);
        await bb(i)
        console.log(i);
        i++
    }
}

aa()

这是输出,输出结果跟我的判断没差别,但是不知道为什么立即就打出来了,我的想法是它会真正意义上的隔10000ms打一次,而不是那种伪打印法

 

因为 setTimeout() 不会阻塞后面的代码,应该把调用 resolve 放在 setTimeout 的回调里

function bb(i){
    return new Promise ((resolve)=>{
        setTimeout(() => {
            cc(i)
            resolve()
        },10000)
    })
}