Javascript setTimeout在这里是如何工作的
但我将func1时间更改为1,func2时间更改为2。持续时间仍为1ms。但输出已更改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);
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