function request(url) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(url)
}, 2000)
})
}
function* getData() {
const res1 = yield request("张三")
const res2 = yield request(res1 + " 李四")
const res3 = yield request(res2 + " 王五")
const res4 = yield request(res3 + " 赵六")
console.log(res4)
}
function execGenerator(genFn) {
const generator = genFn()
function exec(res) {
const result = generator.next(res)
if (result.done) return result.value
result.value.then(res => {
exec(res)
})
}
exec()
}
execGenerator(getData)