为什么会出现两个6.5???
注释一个b().next()后就是一个6.5;为社么第二个next()会导致console.log(6.5)再次执行??怎么理解这个问题??
为什么会出现两个6.5???
注释一个b().next()后就是一个6.5;为社么第二个next()会导致console.log(6.5)再次执行??怎么理解这个问题??
每次调用生成器函数都会生成一个新的迭代器
,你调用了两次b()
,所以生成了两个
新的迭代器,每个新的迭代器都是没有关联
,独立执行的。你的意思可能是想执行同一个
迭代器两次
吧,而不是生成两个迭代器,分别都执行一次:
function a () {
function * b () {
yield setTimeout(() => {
console.log(6.5)
}, 5000)
yield 2
}
let iterator = b()
iterator.next()
iterator.next()
}
a()
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
你把计时器改成普通函数试试