• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Symbol.asyncIterator

    Symbol.asyncIterator符号指定了一个对象的默认异步迭代器。如果一个对象设置了这个属性,它就是异步可迭代对象,可用于for await...of循环。

    描述

    Symbol.asyncIterator是一个用于访问对象的@@asyncIterator方法的内建符号。一个异步可迭代对象必须要有Symbol.asyncIterator属性。

    Symbol.asyncIterator属性的属性特性:
    writablefalse
    enumerablefalse
    configurablefalse

    示例

    自定义异步可迭代对象

    你可以通过设置[Symbol.asyncIterator]属性来自定义异步可迭代对象。

    const myAsyncIterable = new Object();
    myAsyncIterable[Symbol.asyncIterator] = async function*() {
        yield "hello";
        yield "async";
        yield "iteration!";
    };
    
    (async () => {
        for await (const x of myAsyncIterable) {
            console.log(x);
            // expected output:
            //    "hello"
            //    "async"
            //    "iteration!"
        }
    })();
    

    内建异步可迭代对象

    目前没有默认设定了[Symbol.asyncIterator]属性的JavaScript内建的对象。不过,WHATWG(网页超文本应用技术工作小组)Streams会被设定为第一批异步可迭代对象,[Symbol.asyncIterator]最近已在设计规范中落地。

    上篇:Symbol.iterator

    下篇:Symbol.match