JavaScript如何处理alert与console.log以及它们在回调函数中的执行顺序

时间:2014-09-11 20:11:54

标签: javascript callback alert execution console.log

有人可以解释下面的代码执行是如何工作的吗?我创建了两个涉及回调函数的场景,一个在回调中使用console.log,另一个使用alert,我想知道导致两者之间执行差异的原因。

在第一个例子中,我在回调函数中使用console.log()。见下文。

var thor = function(){
  console.log('I am THOR!');
};

var otherFunction = function(callback){
  for (var i = 0; i < 11; i++){
    console.log(i);
  }
  callback();
};

otherFunction(thor);

以下是结果:

0
1
2
3
4
5
6
7
8
9
10
"I am THOR!"

这是第二个例子。唯一改变的是&#39; console.log&#39;已被“警报”取代在&#39; thor&#39;功能。

var thor = function(){
  alert('I am THOR!');
};

var otherFunction = function(callback){
  for (var i = 0; i < 11; i++){
    console.log(i);
  }
  callback();
};


otherFunction(thor);

...结果是:

<alert>
0
1
9
10
8
7
6
5
4
3
2

for循环中的数字以随机顺序记录,并在记录之前弹出警告框。我想知道导致这种差异的原因以及为什么在回调中调用alert时它首先发生而不是在for循环完成记录数字之后。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当我在chrome中测试时,警报响起,如果你在回调中添加了console.log,你会看到它在数字之后出现。执行速度可能会产生误导,因为显然整个过程都会在不到一秒的时间内结束。

小提琴:http://jsfiddle.net/97vLmfrq/

var thor = function(){
  console.log("in callback");
  alert('I am THOR!');
};

var otherFunction = function(callback){
  for (var i = 0; i < 11; i++){
    console.log(i);
  }
  callback();
};


otherFunction(thor);