×

实例:如何简单实现async/await中的async函数

作者:abc1232019.05.15来源:Web前端之家浏览:13366评论:0
关键词:jsasync/awaitasync

async 函数的实现原理,就是将 Generator 函数和自动执行器,包装在一个函数里。

function spawn(genF) {
    return new Promise(function(resolve, reject) {
        const gen = genF();
        function step(nextF) {
            let next;
            try {
                next = nextF();
            } catch (e) {
                return reject(e);
            }
            if (next.done) {
                return resolve(next.value);
            }
            Promise.resolve(next.value).then(
                function(v) {
                    step(function() {
                        return gen.next(v);
                    });
                },
                function(e) {
                    step(function() {
                        return gen.throw(e);
                    });
                }
            );
        }
        step(function() {
            return gen.next(undefined);
        });
    });
}

学习下咯。

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://www.jiangweishan.com/article/jsjj28348230985.html

网友评论文明上网理性发言 已有0人参与

发表评论: