nodejs设计思想杂技二 callback 模式

回调。。。。与return

回调函数如何替代return的功能?


同步的函数

function add(a, b) {
return a + b;
}


异步的函数

function add(a, b, callback) {
callback(a + b);
}


同步的函数执行后return

异步的函数执行完将结果放入callback中

同步函数的 执行过程是立即执行,异步函数如上一章所述。

一个闭包。


同步改异步

同步的代码

var fs = require('fs');
var cache = {};
function consistentReadSync(filename) {
if(cache[filename]) {
return cache[filename];
} else {
cache[filename] = fs.readFileSync(filename, 'utf8');
return cache[filename];
}}

异步的代码

var fs = require('fs');
var cache = {};
function consistentReadAsync(filename, callback) {
if(cache[filename]) {
process.nextTick(function() {
callback(cache[filename]);
});
} else {
//asynchronous function
fs.readFile(filename, 'utf8', function(err, data) {
cache[filename] = data;
callback(data);
});
}
}


用nexttick将函数放在event queue的top,下次event loop执行时第一个就是他

setImmediate()将函数放在event queue的底部,不会像nexttick那样可能会把别人饿死。。。


欢迎加q群243153894交流


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值