async

2019-11-08  本文已影响0人  原型设计
let async1 = (() => {
    var ref = _asyncToGenerator(function* () {
        console.log('async1 start');
        yield async2();
        console.log('async1 end');
    });

    return function async1() {
        return ref.apply(this, arguments);
    };
})();

let async2 = (() => {
    var ref = _asyncToGenerator(function* () {
        console.log('async2');
    });

    return function async2() {
        return ref.apply(this, arguments);
    };
})();

function _asyncToGenerator(fn) {
    return function () {
        var gen = fn.apply(this, arguments);
        return new Promise(function (resolve, reject) {
            function step(key, arg) {
                try {
                    var info = gen[key](arg);
                    var value = info.value;
                } catch (error) {
                    reject(error); return;
                }

                if (info.done) {
                    resolve(value);
                } else {
                    return Promise.resolve(value).then(
                        function (value) {
                            return step("next", value);
                        },
                        function (err) {
                            return step("throw", err);
                        });
                }
            }
            return step("next");
        });
    };
}

console.log('script start');
async1();
console.log('script end');
上一篇下一篇

猜你喜欢

热点阅读