大家好,第一次在 SegmentFault
上写博客,之前是在 GitHub
上用repo的issue特性写的。不仅仅是为了 GFM
还是因为自己文笔不好,所以有想把自己隐藏起来的想法,我想想这样对自己的进步实在是非常不易的。所以还是决定到一个阳光的地方把自己的小小的积累写出来吧。
废话不多,最近朴灵大大的 《深入浅出Node.js》
估计已经火遍半边天了。盯了好久,我也终于入手了。里面一些章节也写的很棒,我想在第一次粗略浏览的时候做一些读书笔记吧。
初学Node.js给我最头疼的地方差不多就是流程控制了,因为我曾经写过后缀非常长的 })})})})
,痛苦异常。查阅了很多资料想解决这个问题,后来因为一些其他原因的关系,暂时停止了node的学习,这个问题就一直保留在心里。我也曾粗略翻阅了ByVoid的书籍也没有找到答案,这次的深入浅出总算给了我一个不错的答案。
第93页前后讲了一些流程控制库,最近尝试过用 Deferred
做一些Promise模式的流程控制。关键API函数就是 then
利用 promisify
创建一个 Deferred Object
。其中实现的原理就是在then中返回一个 Promise
对象,类似的使用方式如下。
var readFileAsync = promisify(fs.readFile);
readFileAsync("file1.txt").then(function (content) {
return readFileAsync("file2.txt");
}).then(function (content) {
console.log(content);
});
如果是Async库,则使用一个强大的API叫做waterfall
async.waterfall([
function (callback) {
fs.readFile("file1.txt", function (err,content) {
callback(err,content);
}
},
function (arg1, callback) {
fs.readFile(arg1, function (err,content) {
});
}
]);
我觉得waterfall是很棒的实践。
今天就先读了这么多,下次继续写