鸿蒙Next开发中多个请求如何设置同时执行
在鸿蒙Next开发中,遇到多个网络请求需要同时执行的场景,应该如何实现?比如需要并行请求多个接口数据,等所有请求完成后统一处理结果。目前尝试用Promise.all()但不太确定鸿蒙的API是否支持,或者是否有更优的方案?希望能提供具体的代码示例或最佳实践。
2 回复
鸿蒙Next里用TaskPool或Worker就能让多个请求一起跑!比如用TaskPool.execute()把任务扔进线程池,它们就会并发执行,像一群饿狼抢食一样快。记得处理回调,别让它们打起来!
更多关于鸿蒙Next开发中多个请求如何设置同时执行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)开发中,可以通过 Promise.all() 或 TaskPool 实现多个请求的同时执行(并发请求)。
1. 使用 Promise.all()
适用于网络请求等异步任务,通过 @ohos.net.http 模块发送请求。
import http from '@ohos.net.http';
async function concurrentRequests() {
const request1 = http.createHttp();
const request2 = http.createHttp();
// 定义多个请求
const promise1 = request1.request('https://api.example.com/data1');
const promise2 = request2.request('https://api.example.com/data2');
try {
// 同时执行,等待所有请求完成
const results = await Promise.all([promise1, promise2]);
console.log('所有请求结果:', results);
} catch (error) {
console.error('请求失败:', error);
}
}
2. 使用 TaskPool(CPU密集型任务)
适用于非I/O的并发计算任务,例如数据处理。
import taskpool from '@ohos.taskpool';
@Concurrent
function computeTask(data: number): number {
// 模拟计算任务
return data * 2;
}
async function runConcurrentTasks() {
const tasks = [1, 2, 3].map(item => taskpool.execute(computeTask, item));
try {
const results = await Promise.all(tasks);
console.log('并发计算结果:', results);
} catch (error) {
console.error('任务执行失败:', error);
}
}
注意事项:
- 网络请求:推荐用
Promise.all()结合http模块。 - CPU密集型任务:使用
TaskPool避免阻塞主线程。 - 错误处理:任一请求失败会导致
Promise.all()整体失败,可用Promise.allSettled()替代。
根据实际场景选择合适方案即可实现并发执行。

