回调。。。。与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交流