co(function *() { var now = Date.now(); yield sleep200; console.log(Date.now() - now); }); function co(fn){ var gen = fn(); next(); function next(res){ var ret; ret = gen.next(res); // 全部结束 if(ret.done){ return; } // 执行回调 if (typeof ret.value == 'function') { ret.value(function(){ next.apply(this, arguments); }); return; } throw 'yield target no supported!'; } } function sleep200(cb){ setTimeout(cb, 200) }在next.apply()那一行。我这里有点糊涂了,像这种点调用的话,this不应该指向调用者吗?也就是next对象,可这里next是个函数。可为什么是window对象呢
1 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
ret.value(function(){
next.apply(this, arguments);
});
这里ret.value的参数是一个匿名函数,你见过匿名函数中的this不是window的情况吗?
添加回答
举报
0/150
提交
取消