TypeScript使用Promise.all模拟10线程并发
时间: 2024-03-28 17:34:11 浏览: 124
并发实验:演示并发AB测试扫描如何相互干扰的应用程序
在TypeScript中,可以使用Promise.all方法来模拟并发执行多个异步任务。下面是一个使用Promise.all模拟10线程并发的示例:
```typescript
async function simulateConcurrentTasks() {
const tasks = [];
// 创建10个异步任务
for (let i = 0; i < 10; i++) {
tasks.push(asyncTask(i));
}
// 并发执行任务
const results = await Promise.all(tasks);
// 处理任务结果
results.forEach((result, index) => {
console.log(`Task ${index} completed with result: ${result}`);
});
}
async function asyncTask(taskId: number): Promise<string> {
return new Promise((resolve) => {
// 模拟异步操作
setTimeout(() => {
resolve(`Task ${taskId} completed`);
}, Math.random() * 1000);
});
}
simulateConcurrentTasks();
```
在上面的示例中,我们定义了一个simulateConcurrentTasks函数,它创建了10个异步任务,并使用Promise.all方法并发执行这些任务。每个异步任务都是通过asyncTask函数来模拟的,它返回一个Promise对象。
在Promise.all方法的参数中,我们传入了一个包含所有异步任务的数组tasks。Promise.all会等待所有任务都完成后才会返回一个新的Promise对象。在await语句后,我们可以获取到所有任务的结果results,并进行处理。
相关问题:
1. 什么是Promise.all方法?
2. 如何在TypeScript中使用Promise对象?
3. 如何模拟并发执行多个异步任务?
4. 有没有其他方法可以实现并发执行异步任务?
阅读全文