js回调函数--callback

1. 回调函数是什么

回调函数就是函数A执行完之后,有一个函数B用来做其他的事情。

一般是将函数B,作为参数,传入到函数A中。

2.实现方法

2.1 使用命名函数

function A(callback){
  console.log("A执行")
  callback();
}
function B(){  //B是回调函数
  console.log("B执行");
}
// 使用
A(B); //这里的B没有括号。
// 输出
A执行 
B执行

2.2 匿名回调函数

function A(num1, num2, callback){ 
    var sum = num1 + num2; 
    callback(sum); 
 } 
 // 使用
A(1, 2, function(sum){ 
    console.log(sum); 
 });
 // 输出
 3

3.使用含有this对象的回调函数

var obj={
    name:"",
    setName:function(name){
        this.name=name;
    }
}
function A(name,callback){
    callback(name);
}
//调用
A('syl',obj.setName);
//检测
window.name;
输出:"syl"
//检测
obj.name;
输出:""

本来我们是希望obj的name是“syl”,但是却没有,这是因为A函数属于全局环境,导致name属性的也属于全局环境。所以我们需改变name的环境,即改变this的环境。

var obj={
    name:"",
    setName:function(name){
        this.name=name;
    }
}
function A(name,callback,obj){
    callback.call(obj,name);
}
//调用
A('syl',obj.setName,obj);
//检测
window.name;
输出:""
//检测
obj.name;
输出:"syl"
一个很好的例子:

比如爬楼梯,你要成功爬上1楼,才能爬2楼,然后三楼

function floors(isSuccess,callback ){
    if (isSuccess) { // 如果成功就执行回调函数
        callback();
    }
}
 
function pa1() { // 爬一楼
    //todo: ...
    console.log('爬一楼');
 
    return true;
}
 
function pa2() {
    //todo: ...
    console.log('爬二楼');
 
    return true;
}
 
floors(pa1(),function() {
    floors(pa2(), function(){
        floors(3, function(){
            console.log('ok')
            
        })
    })
})
原文:https://blog.csdn.net/wangweiscsdn/article/details/84000826 

半夏话前端

微信公众号

帮助更多人成长!

已关注

上一篇:大数据进阶之路——Scala 高级函数


下一篇:笔记 - 10.3、HTML - CSS样式笔记2