벤 :
다음 자바 스크립트가 크롬 (v80.0.3987.116)와 OSX 10.15.2에 파이어 폭스 (v72.0.2)에 걸 수있는 실행됩니다.
왜?
나뿐만 반복자 기능을 표시하고 있습니다 async
.
const iterable = {
async *[Symbol.iterator]() {
yield 'one'
}
}
console.log([...iterable])
버그 :
지금 때문에 [Symbol.iterator]
방법은 더 이상 반복자를 반환, 그것은 AsyncIterator을 반환하지 않습니다. 즉 여전히와 객체의 .next()
확산 구문은 불평하지 않습니다 반복하려고, 그래서 방법. 그러나에 대한 호출 .next()
방법은 더 이상 반환하지 않는다 {value:…, done:true}
개체를 그들은 항상 약속을 반환합니다. 이 약속 객체는 더 truthy에없는 done
당신의 반복자가 정지하지 않도록, 재산을 ...
당신과 같은 결과를 얻을 수 있습니다
const iterable = {
*[Symbol.iterator]() {
while (true) {
yield
}
}
}
console.log([...iterable])
또는
const iterable = {
[Symbol.iterator]() {
return {
next() {
return {};
}
}
}
}
console.log([...iterable])