const p1 = () => Promise.resolve(1) const p2 = () => { return new Promise((resolve) => { setTimeout(() => { resolve(2) }, 2000) }) } const p3 = () => { return new Promise((resolve) => { setTimeout(() => { resolve(3) }, 3000) }) } myPromiseChain([p1, p2, p3]).then(res => { console.log(res) }) function myPromiseChain(arr) { let num = 0 return new Promise((resolve, reject) => { arr.forEach(item => { item().then(res => { num++ console.log(res) if (num === 3) { resolve('所有promise执行完毕&(16968)#39;) } }) }); }) }