Javascript setTimeout在这里是如何工作的

Javascript setTimeout在这里是如何工作的,javascript,settimeout,Javascript,Settimeout,但我将func1时间更改为1,func2时间更改为2。持续时间仍为1ms。但输出已更改 function A() { // do somthing console.log("A"); setTimeout(func1, 0); B(); } function func1() { console.log("func1"); } function B() { console.log("B"); setTimeout(func2, 0);

但我将func1时间更改为1,func2时间更改为2。持续时间仍为1ms。但输出已更改

function A() {
    // do somthing
    console.log("A");
    setTimeout(func1, 0);
    B();
}

function func1() {
    console.log("func1");
}

function B() {
    console.log("B");
    setTimeout(func2, 0);
    C();
}

function func2() {
    console.log("func2");
}

function C() {
    // do somthing
    console.log("C");
}
A();
// output: 
//  A
//  B
//  C
//  func1
// func2

然后我尝试使用setTimeout(func1,1001),setTimeout(func2,1002)。但是“func2”仍然会在“func1”之前输出。看起来setTimeout(func1,0),setTimeout(func2,1)是特别的一个。但是两个计时器设置之间的持续时间总是1ms。我想知道是什么使输出不同。

这可能是因为
做了一些事情
代码片段无法保证计时器的执行顺序@muraleekrishna这里的“做点什么”没有任何内容。@Arun P Johny我还不太清楚。在哪个浏览器中?我在Mac OS上尝试了Safari、Chrome和Firefox,结果都是第一个例子。setInterval的分辨率通常不超过3或4毫秒(在某些浏览器中可能更高,即过去的分辨率约为15毫秒)。
function A() {
    // do somthing
    console.log("A");
    setTimeout(func1, 1);
    B();
}

function func1() {
    console.log("func1");
}

function B() {
    console.log("B");
    setTimeout(func2, 2);
    C();
}

function func2() {
    console.log("func2");
}

function C() {
    // do somthing
    console.log("C");
}
A();
// output: 
//  A
//  B
//  C
//  func2
// func1