Yield语法使用

const combineAsyncError = tasks => {  
    const doGlide = {}  
    const handler = res => {  
        doGlide.out = res  
        // 预先定义好生成器  
        doGlide.node = (function*(){  
        const { out, data } = doGlide  
        const len = tasks.length  
        // yield把循环带回了JavaScript编程的世界  
        while(doGlide.times < len)  
            yield noErrorAwait(tasks[doGlide.times++])  
        // 全部请求成功(生成器执行完毕)时,返回数据  
        out(data)  
        })()  
    doGlide.node.next()  
    }  
    return new Promise(res => handler(res))  
}
posted @ 2023-06-26 09:46  kitebear  阅读(3)  评论(0编辑  收藏  举报