Node-thunkify Code Reading
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function thunkify(fn) {
assert('function' == typeof fn, 'function required');
return function () {
var args = slice.call(arguments);
var ctx = this;
return function (done) { // done 是回调函数
var called;
args.push(function() {
if (called) return;
called = true;
done.apply(null, arguments);
}); // 将回调处理加入参数列表
try {
fn.apply(ctx, args); // 函数处理
} catch (err) {
done(err); // 异常获取并用回调处理
}
}
}
};
|
例子
1
2
3
4
5
6
7
8
| var thunkify = require('thunkify');
var fs = require('fs');
var read = thunkify(fs.readFile);
read('package.json', 'utf8')(function(err, str){
});
|