Symbol.iterator与Symbol.asyncIterator并用Example

    选择打赏方式

let obj = {
    count: 0,
    items: {
        names: ['小明', '笑话', '小草'],
        age: [19,20,30],
        haha: ['小小', '大大'],
    },
    Gen(time) {
        return new Promise((resolve, reject) => {
            setTimeout(function() {
                resolve({
                    done: false, value: time
                })
            }, time)
        })
    },
    [Symbol.asyncIterator] () {
        let self = this
        return {
            next() {
                self.count++
                if (self.count < 4) {
                    return self.Gen(Math.random() * 1000)
                }else {
                    return Promise.resolve({done: true, value: ''})
                }
            }
        }
    },
    [Symbol.iterator] () {
        let arr = this.items;
        let keys = Reflect.ownKeys(arr)
        let values = [];
        return {
            next() {
                if (!values.length) {
                    if (keys.length) {
                        values = arr[keys[0]]
                        keys.shift()
                    } else {
                        return { done: true, value: '' }
                    }
                }
                return {
                    value: values.shift(),
                    done: false
                }
            }
        }
    }
}

for (let i of obj) {
    console.log(i)
}

async function test() {
    for await (let i of obj) {
        console.log(i)
    }
}

test()
版权声明:若无特殊注明,本文皆为《 张宇童 》原创,转载请保留文章出处。
本文链接:Symbol.iterator与Symbol.asyncIterator并用Example https://www.zyt8.cn/h/220.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!