当前位置:实例文章 » HTML/CSS实例» [文章]两个 js手写简易流程并发控制的题

两个 js手写简易流程并发控制的题

发布人:shili8 发布时间:2025-03-09 11:53 阅读次数:0

**流程并发控制**

在软件开发中,流程并发控制是指多个任务或流程同时执行的能力。这种设计可以提高系统的吞吐量、响应速度和可扩展性。在 JavaScript 中,我们可以使用 Promise 和 async/await 来实现流程并发控制。

**示例1: 使用 Promise**

我们来看一个简单的例子,假设有三个任务:A、B 和 C。每个任务都需要花费一定时间完成。我们希望同时执行这三个任务,并且当所有任务完成后,输出结果。

javascript// 定义三个任务函数function taskA() {
 return new Promise((resolve, reject) => {
 setTimeout(() => {
 console.log('Task A completed');
 resolve();
 },2000);
 });
}

function taskB() {
 return new Promise((resolve, reject) => {
 setTimeout(() => {
 console.log('Task B completed');
 resolve();
 },3000);
 });
}

function taskC() {
 return new Promise((resolve, reject) => {
 setTimeout(() => {
 console.log('Task C completed');
 resolve();
 },1000);
 });
}

// 使用 Promise.all() 来并发执行任务Promise.all([taskA(), taskB(), taskC()])
 .then(() => {
 console.log('All tasks completed');
 })
 .catch((error) => {
 console.error(error);
 });

在这个例子中,我们使用 `Promise.all()` 来并发执行三个任务。`Promise.all()` 会等待所有 Promise 都完成后,才会输出结果。如果任何一个 Promise 失败,`Promise.all()` 也会被 reject。

**示例2: 使用 async/await**

我们来看另一个例子,假设有两个任务:A 和 B。每个任务都需要花费一定时间完成。我们希望同时执行这两个任务,并且当所有任务完成后,输出结果。
javascript// 定义两个任务函数async function taskA() {
 console.log('Task A started');
 await new Promise((resolve, reject) => {
 setTimeout(() => {
 console.log('Task A completed');
 resolve();
 },2000);
 });
}

async function taskB() {
 console.log('Task B started');
 await new Promise((resolve, reject) => {
 setTimeout(() => {
 console.log('Task B completed');
 resolve();
 },3000);
 });
}

// 使用 async/await 来并发执行任务async function main() {
 try {
 await taskA();
 await taskB();
 console.log('All tasks completed');
 } catch (error) {
 console.error(error);
 }
}

main();

在这个例子中,我们使用 `async/await` 来并发执行两个任务。`async/await` 会等待所有任务完成后,才会输出结果。如果任何一个任务失败,`async/await` 也会被 reject。

**总结**

流程并发控制是软件开发中的一个重要概念。在 JavaScript 中,我们可以使用 Promise 和 async/await 来实现流程并发控制。通过使用这些技术,我们可以提高系统的吞吐量、响应速度和可扩展性。

其他信息

其他资源

Top