JavaScript Promises 本身并不直接支持并發,它們主要用于處理異步操作并確保按照預期的順序執行。然而,您可以使用 Promise.all()
方法來實現一定程度的并發。Promise.all()
接收一個 Promise 數組作為參數,并在所有 Promise 都成功完成時返回一個新的 Promise。如果其中任何一個 Promise 失敗,它將立即拒絕并返回第一個失敗的 Promise 的原因。
以下是一個使用 Promise.all()
實現并發的示例:
const asyncTask1 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Task 1 completed');
}, 1000);
});
};
const asyncTask2 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Task 2 completed');
}, 2000);
});
};
const asyncTask3 = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Task 3 completed');
}, 3000);
});
};
Promise.all([asyncTask1(), asyncTask2(), asyncTask3()])
.then((results) => {
console.log(results); // ['Task 1 completed', 'Task 2 completed', 'Task 3 completed']
})
.catch((error) => {
console.error(error);
});
在這個示例中,我們定義了三個異步任務(asyncTask1
、asyncTask2
和 asyncTask3
),它們分別在 1 秒、2 秒和 3 秒后完成。通過將這三個任務放入一個數組中并將它們傳遞給 Promise.all()
,我們可以并發地執行它們。當所有任務都成功完成時,我們將收到一個包含所有任務結果的數組。如果有任何任務失敗,我們將立即收到錯誤信息。