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交流


你可能感兴趣的:(设计模式,nodejs)