在前端开发中,我们经常需要同时处理多个异步操作。比如在页面初始化时,可能需要同时加载配置信息和获取当前页面的域名。这时候 Promise.all()
就派上用场了。
Promise.all()
接收一个 Promise 数组作为参数,返回一个新的 Promise。只有当数组中所有 Promise 都成功完成时,新 Promise 才会完成。如果有任何一个 Promise 失败,新 Promise 也会立即失败。
让我们看一个实际的例子:
// 同时执行两个异步操作
Promise.all([
twpConfig.onReady(), // 等待配置加载完成
getTabHostName() // 获取当前标签页域名
]).then(results => {
// results 是一个数组,包含两个 Promise 的结果
const [config, hostname] = results;
console.log('配置加载完成:', config);
console.log('当前域名:', hostname);
}).catch(error => {
console.error('发生错误:', error);
});
twpConfig.onReady()
和 getTabHostName()
是两个独立的异步操作Promise.all()
将它们包装在一起并发执行then
中处理结果[config, hostname]
获取各自的结果catch
处理错误Promise.all 是处理多个并发异步操作的利器,它让我们可以:
合理使用 Promise.all 可以让异步代码更优雅,性能更好。但也要注意它的"一失败全失败"特性,在实际应用中要根据业务需求选择合适的 Promise 组合方式。