>[danger]promise.all如何实现所有的执行完再返回? Promise.all 方法会等待所有的 Promise 对象都变为 resolve 状态后,才会返回一个新的 Promise 对象。可以通过以下两种方式实现 Promise.all 等待所有执行完再返回的效果: 1. **使用 async/await**: 可以将 Promise.all 结合 async/await 使用,这样可以在代码中以同步的方式处理多个 Promise,并等待它们全部执行完毕后再继续执行。 ```javascript async function myFunction() { const promises = [promise1, promise2, promise3]; try { const results = await Promise.all(promises); console.log('All promises resolved: ', results); } catch (error) { console.error('At least one promise rejected: ', error); } } myFunction(); ``` 2. **使用.then()链式调用**: 在 Promise.all 返回的 Promise 对象上使用 then 方法,传入一个回调函数,该回调函数会在所有 Promise 都变为 resolve 状态后执行。 ```javascript const promises = [promise1, promise2, promise3]; Promise.all(promises) .then(results => { console.log('All promises resolved: ', results); }) .catch(error => { console.error('At least one promise rejected: ', error); }); ``` 无论是使用 async/await 还是使用.then()链式调用,Promise.all 都会等待所有的 Promise 对象都变为 resolve 状态后,才会执行后续的逻辑或返回结果。如果其中任何一个 Promise 被 reject,Promise.all 会立即返回一个 rejected 状态的 Promise,并且丢弃其余未完成的 Promise。