<small id='46vk'></small> <noframes id='jD6s1wkgV'>

  • <tfoot id='WAXBMhurQS'></tfoot>

      <legend id='msbWle'><style id='guEQNj9U'><dir id='XZIP'><q id='EHRcJyA'></q></dir></style></legend>
      <i id='vO5Bxy'><tr id='3hEANvZl6'><dt id='lqeUGbtR'><q id='8Zlu0j'><span id='FZjcMVmeq'><b id='wVyojAPlDY'><form id='OH0vISs3K'><ins id='V75ZoYX'></ins><ul id='hK0cqYA'></ul><sub id='DwZsVYqSzv'></sub></form><legend id='JQ3r5vd'></legend><bdo id='RlaFJZBcV'><pre id='inrJUwaE7'><center id='PQSBd'></center></pre></bdo></b><th id='EQN7SkHa'></th></span></q></dt></tr></i><div id='3hwiX'><tfoot id='RUmAtBC7eE'></tfoot><dl id='Nx2d'><fieldset id='mFye'></fieldset></dl></div>

          <bdo id='aMbytTH1'></bdo><ul id='Wdwl3'></ul>

          1. <li id='j8Zg3'></li>
            登陆

            1号站平台官方网站-JavaScript开发人员都应知道的异步迭代,你会了吗?

            admin 2019-05-18 262人围观 ,发现0个评论


            Asynchronous Iteration(异步迭代)

            对数据调集进行迭代是编程的一个重要部分。

            在ES2015之前,JavaScript供给了for, for…以及map()、filter()和forEach()等办法。

            为了让程序员能够一次处理一个调集中的元素,ES2015引入了iterator接口。

            假如目标具有符号,则该目标是可迭代的。

            迭代器特点。

            在ES2015中,字符串和调集目标(如Set、Map和Array)都带有一个符号。

            特点,因此是可迭代的。

            下面的代码给出了一个怎么一次拜访一个可迭代元素的比如:


            Symbol.iterator是一个众所周知的符号,用于指定回来迭代器的函数。


            与迭代器交互的首要办法是next()办法。

            此办法回来具有两个特点的目标:value和done。

            value特点包括调集中下一个元素的值。

            done特点包括true或false,表明调集的完毕是否现已抵达。

            默许情况下,一般目标是不行迭代的,可是假如您界说一个符号,它就能够成为可迭代的。

            迭代器特点,如下例所示:


            这个目标是可迭代的,由于它界说了一个符号。

            迭代器特点。

            迭代器运用object .keys()办法获取目标特点名的数组,然后将其分配给值常量。

            它还界说了一个计数器变量,并给它一个初始值0。

            当迭代器被执行时,它回来一个包括next()办法的目标。

            每次调用next()办法时,它回来一个{value, done}对,值保存调集中的下一个元素,done保存一个布尔值,指示迭代器是否到达调集的需求。

            尽管这段代码作业得很完美,但它的复杂性是不必要的。

            走运的是,运用生成器函数能够大大简化这个进程:


            在这个生成器中,a代表…循环用于枚举调集并生成每个特点的值。

            成果与前面的示例完全相同,但短得多。

            迭代器的缺陷是它们不适合表明异步数据源。

            处理这个问题的办法是异步迭代器和异步迭代器。

            异步迭代器与传统迭代器的不同之处在于,它不以{value, done}的方式回来一般目标,而是回来一个完成为{value, done}的许诺。


            异步迭代器界说一个符号。

            回来异步迭代器的asyncIterator办法(而不是Symbol.iterator)。

            举个比如就能阐明这一点:


            留意,不行能运用许诺的迭代器来完成相同的成果。

            尽管一个一般的同步迭代器能够异步地确认值,但它依然需求同步地确认“done”的状况。

            相同,你能够运用生成器函数简化这个进程,如下所示:


            一般,生成器函数运用next()办法回来生成器目标。

            调用next()时,它回来1号站平台官方网站-JavaScript开发人员都应知道的异步迭代,你会了吗?一个{value, done}对,其值特点保存生成的值。

            异步生成1号站平台官方网站-JavaScript开发人员都应知道的异步迭代,你会了吗?器做相同的作业,仅仅它回来一个完成为{value, done}的许诺。

            在可迭代目标上进行迭代的一种简略办法是运用for…的声明。

            但关于……of不能与异步迭代的值一同作业,而且done不是同步确认的。

            根据这个原因,ES2018供给了等候……的声明。

            让咱们看一个比如:


            在此代码中,for…wait…的句子隐式调用符号。

            办法获取一个异步迭代器。

            每次经过循环时,都会调用迭代器的next()办法,该办法回来一个promi1号站平台官方网站-JavaScript开发人员都应知道的异步迭代,你会了吗?se。

            一旦许诺被解析,得到的目标的value特点被读取到x变量。

            循环持续,直到回来目标的done特点的值为true。

            记住,等候……of句子仅在异步生成器和异步函数中有用。

            违背此规则将导致SyntaxError。

            一般,生成器函数运用next()办法回来生成器目标。

            调用next()时,它回来一个{value, done}对,其值特点保存生成的值。

            异步生成器做相同的作业,仅仅它回来一个完成为{value, done}的许诺。

            在可迭代目标上进行迭代的一种简略办法是运用for…的声明。

            但关于……of不能与异步迭代的值一同作业,而且done不是同步确认的。

            根据这个原因,ES2018供给了等候……的声明。

            让咱们看一个比如:


            在此代码中,for…wait…的句子隐式调用符号。

            办法获取一个异步迭代器。

            每次经过循环时,都会调用迭代器的荒野猎人next()办法,该办法回来一个promise。

            一旦许诺被解析,得到的目标的value特点被读取到x变量。

            循环持续,直到回来目标的done特点的值为true。

            记住,等候……of句子仅在异步生成器和异步函数中有用。

            违背此规则将导致SyntaxError。

            声明:文章内容源于网络,如有侵权,请与咱们联络删去或授权事宜

            今日就到这儿啦,喜爱编程的小伙伴能够重视我哦!有学习方面的问题能够私信回复:学习!

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP