迭代器模式 rx 应用

迭代器:一个特殊的对象,它包含一个next方法,next方法返回一个对象,这个对象包含两个属性,一个是value,表示成员的值,一个是done,done的值是一个布尔类型,表示迭代器是否结束。

 方法1:基于es6手动创建一个迭代器:

const obj = {a: 'a', b: 'b', c: 'c'}

obj[Symbol.iterator] = function() {
    const self = this
    const keys = Object.keys(self)
    const len = keys.length
    let pointer = 0
    return {
        next() {
            const done = pointer >= len
            const value = !done ? self[keys[pointer++]] : undefined
            return {
                value,
                done
            }
        }
    }
}

 

方法2: 基于es6 生成器(Generator):   调用 创建一个迭代对象。

let creatiterators=function *(a) {

    if(a==1){

        yield "over"
    }else{
        a=1
        yield a+2;

        yield a+4

        yield {a:a}

    }
}

let liststream=creatiterators()


for (const val of liststream) {
    console.log(val)
}

  

原文地址:https://www.cnblogs.com/breakdown/p/12161636.html