导读Promise vs setTimeout

PromisesetTimeout都是异步的,那么有啥区别呢?谁更快呢?

我们先来看一下,setTimeout如果没有第二个参数的情况下,会发生什么~

var total = 0;
var max = 100;

function test(i) {
    var ts = performance.now();
    setTimeout(function () {
        total += performance.now() - ts;
        if (i < max) {
            test(i + 1);
        } else {
            console.log(total / max);
        }
    });
}

test(0);

在本地的机器上跑了10次,发现每次结果都是在 4.5~4.9ms 之间,嗯哼?发生了啥?为啥隔了4ms才执行回调?


我以为这个问题很简单,实际上比想象的更复杂,我先学习一下,然后再来写~