nodejs回调函数理解

回调实例

回调函数

问题:想要得到一秒后 计算出的结果

 //错误写法
 function add(x,y) {
     console.log(1);
     setTimeout(function () {
        console.log(2);
         var ret = x + y;
         return ret;
     },1000);
     console.log(3)
 }

 console.log(add(10,20))

image-20200908154221393

image-20200908153947659

添加一个函数作为参数,将计算出来的结果传入到参数中,调用函数的时候,传入一个函数用来接收计算出来的值

 //正确写法
 function add(x,y,callback) {
    console.log(1);
    setTimeout(function () {
       console.log(2);
        var ret = x + y;
        callback(ret);
    },1000);
    console.log(3)
}

add(10,20,function (ret){
    console.log(ret)
})

使用eventProxy 使异步串行

实现调用两次异步的add 方法,计算其和

callback.js

/**
 * 回调函数理解
 */

 //正确写法
exports.add = function add(x,y,callback) {
    console.log(1);
    setTimeout(function () {
       console.log(2);
        var ret = x + y;
        callback(ret);
    },1000);
    console.log(3)
}

callback-event.js

var eventProxy = require('eventproxy')
var Callback = require('./callback')
var eq = new eventProxy()

//注册事件
eq.all('sum1','sum2',function (sum1_data,sum2_data) {
    console.log(sum1_data + sum2_data)
})

Callback.add(10,20,function (ret) {
    eq.emit('sum1',ret)
})

Callback.add(20,30,function (ret) {
    eq.emit('sum2',ret)
})

image-20200908161008948

Promise

promise容器概念

promiseAPI代码图示

promise链式调用

回调实例

回调函数

问题:想要得到一秒后 计算出的结果

 //错误写法
 function add(x,y) {
     console.log(1);
     setTimeout(function () {
        console.log(2);
         var ret = x + y;
         return ret;
     },1000);
     console.log(3)
 }

 console.log(add(10,20))

image-20200908154221393

image-20200908153947659

添加一个函数作为参数,将计算出来的结果传入到参数中,调用函数的时候,传入一个函数用来接收计算出来的值

 //正确写法
 function add(x,y,callback) {
    console.log(1);
    setTimeout(function () {
       console.log(2);
        var ret = x + y;
        callback(ret);
    },1000);
    console.log(3)
}

add(10,20,function (ret){
    console.log(ret)
})

使用eventProxy 使异步串行

实现调用两次异步的add 方法,计算其和

callback.js

/**
 * 回调函数理解
 */

 //正确写法
exports.add = function add(x,y,callback) {
    console.log(1);
    setTimeout(function () {
       console.log(2);
        var ret = x + y;
        callback(ret);
    },1000);
    console.log(3)
}

callback-event.js

var eventProxy = require('eventproxy')
var Callback = require('./callback')
var eq = new eventProxy()

//注册事件
eq.all('sum1','sum2',function (sum1_data,sum2_data) {
    console.log(sum1_data + sum2_data)
})

Callback.add(10,20,function (ret) {
    eq.emit('sum1',ret)
})

Callback.add(20,30,function (ret) {
    eq.emit('sum2',ret)
})

image-20200908161008948

Promise

promise容器概念

promiseAPI代码图示

promise链式调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古月_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值