异步操作之回调函数

注意:凡是需要得到一个函数内部异步操作的结果,如下面几种情况:setTimeout   readFile writeFile  ajax,这种必须通过回调函数来进行操作。

也就是在调用的位置传递一个函数进来,在封装的函数内部调用传递进来的函数。

下面是错误示范:

第一种不成立的写法:

function add(x,y){
    console.log(1);
    setTimeout(function(){
        console.log(2);
        var result = x + y;
        return result;
    },1000)
    console.log(3);
    //到这里执行就结束了,不会等到前面的定时器,所以就直接返回默认值undefined
}

console.log(add(10,20));

输出结果为:

第二种不成立的写法:

function add(x,y){
    var result;
    console.log(1);
    setTimeout(function(){
        console.log(2);
        result = x + y;
    },1000)
    console.log(3);
    //到这里执行就结束了,不会等到前面的定时器,所以就直接返回默认值undefined
    return result;
}

console.log(add(10,20));

正确方式:通过回调函数获取函数中异步操作的结果。(回调函数:callback  异步操作:setTimeout)

function add(x,y,callback){
    console.log(1);
    setTimeout(function(){
        var result = x+y;
        callback(result);
    },1000)
}
add(10,20,function(result){
    console.log(result);
 })

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值