第二次调用我们向其进行传值generator.next(5),前一个yield 12这行暂停点获取传值,并将5传递给a, 忽略12这个值,然后传递给 yield (a + 1) 这个暂停点,因此是6返回给...从步骤说明中,向生成器传递数据,首行的next方法是启动生成器,及时向其传值,也不能进行变量赋值,你可以拿上述例子进行实验,无论你传递什么都是徒劳的,因为传递数据只能向上个暂停点进行传递,首个暂停点不存在上个暂停点...比如我们要实现一个zip函数功能,类似Python的zip函数功能,将多个可迭代的对象合成一个对象,合成对象的方法,就是循环依次从各个对象的位置进行取值合并,比如有两个数组a=[1,2,3],b=[4,5,6...console.log([...zip(oneDigitPrimes(),"ab",[0])]);
//[ 2, 'a', 0, 3, 'b', 5, 7 ]
从zip函数中我们可以看出:
首先通过Map函数将传入的可迭代对象进行实例化...然后循环可迭代对象,通过yield关键字调用next()方法进行返回输出。
直到对应生成器数值消费完毕,移除对应的生成器(迭代器)对象。