运行promise-yiled生成器的工具

#code

/**

*

* @param 生成器函数 gen

*/

function run(gen) {

    var args = [].slice.call(arguments, 1), it;

    it = gen.apply(this, args);

    return Promise.resolve()

    .then(function handleNext(value) {

        var next = it.next(value);

        return (function handleRes(next) {

            if (next.done) {

                return next.value;

            }

            else {

                return Promise.resolve(next.value).then(

                    handleNext,

                    function handleErr(err){

                        return Promise.resolve(it.throw(err)).then(handleRes);

                })

            }

        })(next)

    })

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容