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); // 异常获取并用回调处理 } } } };
|