왜 자바 스크립트 런타임 원인이 비동기 생성이 중단 하는가?

벤 :

다음 자바 스크립트가 크롬 (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])

추천

출처http://43.154.161.224:23101/article/api/json?id=7592&siteId=1