Promise 内的 SetInterval。为什么这个承诺会立即解决?

Mit*_*Ius 3 javascript setinterval promise

我试图理解承诺是如何运作的

let promise = new Promise( (resolve, reject) => {
    alert("started");
    let num = 0;
    let interval = setInterval(() => {
        alert(`state ${num}`);
        num += 2;
        if (num > 4) {
            clearInterval(interval);
            alert("finished");
            resolve()
        }
    }, 1000)
});
promise.then(alert('resolved'))
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我立即看到警报startedresolved
然后间隔 1 秒state 0、、state 2state 4。 为什么 Promise 会立即解决?如何防止 Promise 在直接执行之前被解析?finished
resolve()

Cer*_*nce 7

.then接受函数作为参数,而不是普通语句或表达式(除非所述表达式计算结果为函数)。使用这个代替:

promise.then(() => console.log('resolved'))
Run Code Online (Sandbox Code Playgroud)

演示:

promise.then(() => console.log('resolved'))
Run Code Online (Sandbox Code Playgroud)