ruanyf / es6tutorial

《ECMAScript 6入门》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新增的语法特性。

Home Page:http://es6.ruanyifeng.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generator 的语法一章的wrapper包装例子是不是可以简化

bsc2xp opened this issue · comments

commented

在 Generator 的语法那章里, 为了解释 next 方法传参的机制,给了一个例子,如下:
`
function wrapper(generatorFunction) {
return function (...args) {
let generatorObject = generatorFunction(...args);
generatorObject.next();
return generatorObject;
};
}

const wrapped = wrapper(function* () {
console.log(First input: ${yield});
return 'DONE';
});

wrapped().next('hello!')
`

我一直没想明白 wrapper 为什么还要返回一个 function ,就这个示例的目的而言写成下面这样不行吗:

`function wrapper(generatorFunction) {
let generatorObject = generatorFunction();
generatorObject.next();
return generatorObject;
}

const wrapped = wrapper(function* () {
console.log(First input: ${yield});
return 'DONE';
});

wrapped.next('hello!')
`

这样简单一点,原文是构造一个 Generator API 兼容对象。