We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JS 中迭代器是指包含 next 方法的对象, next 方法返回一个包含 value 和 done 键值的对象。
a.next() // {value: 1, done: false} a.next() // {value: 2, done: false} a.next() // {value: undefined, done: true}
生成器 是 一种类型的迭代器, 生成器函数返回一个生成器对象,这个对象是可迭代的
function * genFunction() { yield 1; } const g = genFunction() g.next() // value: 1, done: false g.next() // value: undefined , done: true
const customIterator = { [Symbol.iterator]: function * () { let i = 0; while(i++ < 10) { yield i } } }
利用 [Symbol.iterator] 我们可以实现直接的迭代对象,该对象可以通过 for ... in... 进行遍历
for ... in...
当我们在生成器对象next 方法传入参数时,当前的 yield 会变成我们传入的参数
function * listener() { while(true) { let msg = yield console.log(msg) } } let l = listener() l.next(1) // 1 l.next(2) // 2
纤程 是 更小的线程,在JS中,可以通过 generator 实现纤程的效果
TODO:demo
利用yield 结合 无限循环, 我们可以通过其他函数调用生成器函数,生产我们想要的值。实际上函数内部使用了 while(true) 的语法,但是执行线程不会进入死循环,十分的有趣。
while(true)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
迭代器
JS 中迭代器是指包含 next 方法的对象, next 方法返回一个包含 value 和 done 键值的对象。
生成器
生成器 是 一种类型的迭代器, 生成器函数返回一个生成器对象,这个对象是可迭代的
自定义迭代器
利用 [Symbol.iterator] 我们可以实现直接的迭代对象,该对象可以通过
for ... in...
进行遍历yield 传值
当我们在生成器对象next 方法传入参数时,当前的 yield 会变成我们传入的参数
纤程
纤程 是 更小的线程,在JS中,可以通过 generator 实现纤程的效果
TODO:demo
惰性求值
利用yield 结合 无限循环, 我们可以通过其他函数调用生成器函数,生产我们想要的值。实际上函数内部使用了
while(true)
的语法,但是执行线程不会进入死循环,十分的有趣。The text was updated successfully, but these errors were encountered: