美文网首页
es6 iterable

es6 iterable

作者: peerben | 来源:发表于2018-08-05 19:44 被阅读13次

    首先一个对象数据结构能够用for of 或...解构,必须是iterable的

    interface Iterable {
      [Symbol.iterator]() : Iterator,
    }
    
    interface Iterator {
      next(value?: any) : IterationResult,
    }
    
    interface IterationResult {
      value: any,
      done: boolean,
    }
    

    对象实现Iterable接口,并且返回一个Iterator, Iterator返回IterationResult格式的数据,那么这个对象就是一个iterable

    如果在 Generator 函数内部,调用另一个 Generator 函数,默认情况下是没有效果的。
    这个就需要用到yield*表达式,用来在一个 Generator 函数里面执行另一个 Generator 函数。

    yield* 表达式用于委托给另一个generator 或可迭代对象。

    yield* 后面接受一个 iterable object 作为参数,然后去迭代(iterate)这个迭代器(iterable object),同时 yield* 本身这个表达式的值就是迭代器迭代完成时(done: true)的返回值。调用 generator function 会返回一个 generator object,这个对象本身也是一种 iterable object,所以,我们可以使用 yield* generator_function() 这种写法。

    相关文章

      网友评论

          本文标题:es6 iterable

          本文链接:https://www.haomeiwen.com/subject/pxfivftx.html