001-模拟IO异步中回调函数的小理解

/*----------------------------------------------------------------------------------------------*/
'use strict';

function eat(food,callback){
setTimeout(()=>{
// 处理food引入的数据
// 这里有个小点让我挺注意,就是ES6这个`str字符串超级模板`,可以随意传入变量进行替换!
console.log(`我要${food}`);

// 回调函数调用,可以传入引入的数据处理结果!
// callback(err,处理结果);
callback();
})
}

function dik(dik,callback){
// 为了满足回调为函数形式,还为了满足在作为参数可以传入自己的参数。
return function (){
setTimeout(()=>{
console.log(`我要${dik}`);
callback();
})
}
}

eat('馒头',dik('饮料',()=>{
console.log('睡觉');
}))

/*----------------------------------------------------------------------------------------------*/
1、从目前自己所学习的回调函数的应用来说,都是在异步中实现,因为异步IO操作没有返回值,只能在callback中处理请求的数据了~~~
同步阻塞操作有返回值,设置一个变量接受这个返回值,然后进行数据处理。自己感觉同步不会发生资源争夺,但是所有的事件都在主线上进行,响应的时间也由主线承担,后续事件全部等待,对用户体验不好哇。
异步由node.js维护的线程池里的承担等待作用,响应后的数据在由回调排队到事件序列,等待被主线程调用,主线执行和等待两不误!!!哈哈哈~~真好。
2、ES6里有个超级模板,`str${var}`可直接替换,真是实用。自己一定要记得。
3、就是回调函数作为参数,若要直接传入参数的,作为这个回调,外面单独写函数里,再return一个函数。所以才有了,
function dik(dik,callback){
// 为了满足回调为函数形式,还为了满足在作为参数可以传入自己的参数。
return function (){
setTimeout(()=>{
console.log(`我要${dik}`);
callback();
})
}
}
posted @ 2016-04-01 13:05  Arminc  阅读(412)  评论(0)    收藏  举报