试着写了一个,大中午看到这题午睡的时候一直在想,输出是3,不知道思路正不正确 function wrap() { let req = [...arguments][0]; let promises = []; function fn() { let p = req(); promises.push(p); return new Promise((resolve, reject) => { promises.forEach((promise, index) => { promise.then(res => { if (index === promises.length - 1) { resolve(res); } }, err => { if (index === promises.length - 1) { reject(res); } }) }); }); } return fn; } let count = 0; function sendRequest() { return new Promise((resolve) => { setTimeout(() => { resolve(++count) }) }); } let newWrap = wrap(sendRequest); newWrap().then(console.log); newWrap().then(console.log); newWrap().then(console.log);