首页 > 其他 > 详细

async框架源码研究

时间:2016-02-19 12:08:16      阅读:144      评论:0      收藏:0      [点我收藏+]

说来惭愧,之前没读过什么源码,今天尝试研究下async框架的源码,就从https://github.com/bsspirit/async_demo这个地方拉了一个async使用的demo来入手,好,一个一个js,一个一个函数来了解!

 

  • apply.js

async.apply是给一个函数预绑定多个参数并生成一个可直接调用的新函数,demo中所给出的例子是

技术分享
 1 function inc(a,b,callback,timeout){  //先定义一个加法函数
 2     var timeout = timeout || 200;
 3     t.wait(200);
 4     setTimeout(function() {
 5         callback(null, a+b);
 6     }, timeout);
 7 }
 8 var fn = async.apply(inc, 1, 2);  //调用apply函数且赋予其部分参数
 9 fn(function(err, n){
10     log(‘1.2 inc: ‘ + n);
11 },500);                 //调用apply返回的函数并补齐所需参数,即相当于调用inc函数
View Code

由此找到async.js中的apply函数

技术分享
1 async.apply = _restParam(function (fn, args) {
2     return _restParam(function (callArgs) {  //返回一个函数并带有调用该函数时所需参数
3         return fn.apply(
4             null, args.concat(callArgs)  //将调用所带参数与已有参数合并,接着传给自定义的函数(即之前的inc函数)
5         );
6     });
7 });
View Code

从以上内容可以看出,apply的实现原理就是返回一个带已有参数的函数,然后在调用该函数的时候再传入其余参数,最后去调用自定义的函数

 

async框架源码研究

原文:http://www.cnblogs.com/Billy-Sherry/p/5200426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!