Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
gaogao1030 opened this issue Jan 23, 2015 · 4 comments
Open

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

gaogao1030 opened this issue Jan 23, 2015 · 4 comments

Comments

@gaogao1030
Copy link

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
Copy link
Author

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

@JacksonTian
Copy link
Owner

你看的是第几印?

@gaogao1030
Copy link
Author

第三次印刷

@gaogao1030
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants