回调实例
问题:想要得到一秒后 计算出的结果
//错误写法
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))
添加一个函数作为参数,将计算出来的结果传入到参数中,调用函数的时候,传入一个函数用来接收计算出来的值
//正确写法
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)
})
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))
添加一个函数作为参数,将计算出来的结果传入到参数中,调用函数的时候,传入一个函数用来接收计算出来的值
//正确写法
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)
})