SOURCE

function async (generator) {
    return function() {
        const gen = generator.apply(this, arguments);
        return new Promise((resolve, reject) => {
            const step = function(key, data) {
                try {
                    let res = gen[key](data);
                } catch(e) {
                    resolve(e);
                }
                const {value, done} = res; 
                if (done) {
                   resolve(value);
                } else {
                     return Promise.resolve(value).then(val => step('next', val), reason => step('throw', resaon));
                }
            }
            step('next');
        });
    }
}
console 命令行工具 X clear

                    
>
console