要求:顺次执行fetch1=>fetch2=>fetch3,先执行fetch1,须要将fetch1的后果作为fetch2的参数,fetch2的后果作为fetch3的参数。
interface IEvents {    [key: string]: Array<Function>}class EventListener {    events: IEvents    constructor() {        this.events = {}    }    listen(key, fn) {        let fns = this.events[key];        if (fns) {            fns.push(fn)        } else {            this.events[key] = [fn]        }    }    on(key, payload) {        const fns = this.events[key]        if (fns && fns.length > 0) {            const fn = fns.shift()            fn(payload)        }    }    remove(key, fn) {        const fns = this.events[key]        if (!Array.isArray(fns)) return        const index = fns.indexOf(fn)        if (index !== -1) {            fns.splice(index, 1)        }    }}let listener = new EventListener()const fetch1 = () => {    setTimeout(() => {        const res = {            current: 'fetch1',            next: 'fetch2'        }        console.log(res)        listener.on('fetch2', res)    })}const fetch2 = (payload) => {    setTimeout(() => {        const res = {            current: payload.next,            next: 'fetch3'        }        console.log(res)        listener.on('fetch3', res)    })}const fetch3 = (payload) => {    console.log({        current: payload.next,        next: ''    })}listener.listen('fetch2', fetch2)listener.listen('fetch3', fetch3)fetch1()