diveintonode_examples icon indicating copy to clipboard operation
diveintonode_examples copied to clipboard

第4章节的promise_a里的smooth.js 部分勘误

Open gaogao1030 opened this issue 10 years ago • 4 comments

var fs = require('fs');

var Deferred = require('./sequence.js').Deferred;

var smooth = function (method) { return function () { var deferred = new Deferred(); var args = Array.prototype.slice.call(arguments, 1);//这里参数为1下面会报路径错误 为0才会传路径参数进去 args.push(deferred.callback()); method.apply(null, args); return deferred.promise; }; };

var readFile = smooth(fs.readFile); readFile('file1.txt', 'utf8').then(function (file1) { return readFile(file1.trim(), 'utf8'); },function(err){console.log(err)}).then(function (file2) {//多加了个错误处理可以看到为1的话 会打印错误日志,书上和这里的版本都没加这个 所以没报错 很容易忽视 // file2 => I am file2 console.log(file2); });

gaogao1030 avatar Jan 23 '15 08:01 gaogao1030

之前打印出来看似正确结果其实是从var Deferred = require('./sequence.js').Deferred;这句话里打印的 看到sequence.js里的执行并没有被去掉 很容易迷惑

gaogao1030 avatar Jan 23 '15 08:01 gaogao1030

你看的是第几印?

JacksonTian avatar Jan 23 '15 09:01 JacksonTian

第三次印刷

gaogao1030 avatar Jan 23 '15 10:01 gaogao1030

这里的example上的代码arguments 也是1 我是clone这个repo 调试的时候发现的

gaogao1030 avatar Jan 23 '15 10:01 gaogao1030