首页 > Web开发 > 详细

JS--回调函数callback的疑惑

时间:2017-03-02 16:34:25      阅读:216      评论:0      收藏:0      [点我收藏+]

什么是回调函数?这个偷来的解释讲的很清楚:

对普通函数的调用:调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行。从发出调用的程序的角度看,这个过程为“调用-->等待被调用函数执行完毕-->继续执行”

回调函数调用:调用程序发出对回调函数的调用后,不等函数执行完毕,立即返回并继续执行。这样,调用程序执和被调用函数同时在执行。当被调函数执行完毕后,被调函数会反过来调用某个事先指定函数,以通知调用程序:函数调用结束。这个过程称为回调(Callback),这正是回调函数名称的由来。

所以回调函数的特点就是占用时间比较长(比如I/O,http请求等),使用回调函数就不需要等待回调函数的结果(系统帮你去执行了),程序直接执行你接下来的代码。

但是有段代码不懂:

 1 var A = function (callback){
 2   callback();
 3   console.log("AAAAAAAA");
 4 }
 5 var B = function (){
 6   for (var i = 0; i < 10000; i++) {
 7   }
 8   console.log("BBBBBBBB");
 9 }
10 A(B);

显示结果为什么是:

BBBBBB
AAAAAA

是因为函数B中for循环是同步的,并且一直占用CPU吗???????

下面这段代码结果也诡异:BBBBBB,AAAAAA,然后test.txt的内容。

为什么????callback 的调用机制和执行顺序肯定没有刚才说的简单。  mark一下,看懂回来改

fs = require(‘fs‘);
var A = function (callback){
  callback();
  console.log("AAAAAAAA");
}
var B = function (){
  fs.readfile(‘test.txt‘,‘utf-8‘,function(err,data){
    console.log(data);
  });
  for (var i = 0; i < 10000; i++) {
  }
  console.log("BBBBBBBB");
}
A(B);

 

JS--回调函数callback的疑惑

原文:http://www.cnblogs.com/weihuan098/p/6491036.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!