node-thunkify Code Reading

##thunkify

##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){
});
...
2019-2024 zs1621