function makePromisify(source) {    if (source.then && typeof source.then === "function") return source    return Promise.resolve(source)}function run(generatorFunc) {    let it = generatorFunc()    let result = it.next()    return new Promise((resolve, reject) => {        const next = function (result) {            if (result.done) {                resolve(result.value)            }            //保证返回的是一个promise            result.value = makePromisify(result.value)            result.value.then(res => {                //将promise的返回值res传入iterator迭代器的next方法中,作为yield后面表达式的返回值                //it.next将停止的yield继续执行到下一个yield,返回的result是一个value,done属性组成的对象                let result = it.next(res)                //递归执行next函数                next(result)            }).catch(err => {                reject(err)            })        }        next(result)    })}const data = "{a:1,b:2}"const data2 = "{c:3,d:4}"const data3 = "{e:5,f:6}"const api = function (data) {    return new Promise(resolve => {        setTimeout(() => {            resolve(data)        }, 1000)    })}function* func() {    let res = yield api(data)    console.log(res)    let res2 = yield api(data2)    console.log(res2)    let res3 = yield api(data3)    console.log(res3)    console.log(res, res2, res3)}run(func)