const delay = ms => new Promise(resolve => setTimeout(() => resolve(ms),ms))
function* gen() {
const listOne = [5000,2000,8000]
for (const value of listOne) {
const n = yield delay(value)
console.log(n.toString().substring(0,1) + '秒')
}
}
(function go(gen) {
const g = gen()
next()
function next(data) {
const {value,done} = g.next(data)
if (done) return
value.then((data)=>{
next(data)
})
}
})(gen)
async function log() {
const setTimeoutLog = (ms) => new Promise(resolve => {
setTimeout(()=>{
console.log(ms.toString().substring(0,1) + '秒')
resolve()
},ms)
})
await setTimeoutLog(5000)
await setTimeoutLog(2000)
await setTimeoutLog(8000)
}
log()
```