在鸿蒙 Next 5.0 中,resolve 和 reject 是与 Promise 相关的概念,用于处理异步操作的结果。它们的作用如下:
1. resolve 的作用
resolve 是一个函数,用于将 Promise 的状态从“未完成”(pending)变为“已完成”(fulfilled)。当异步操作成功时,调用 resolve 函数,并传递操作的结果作为参数。
示例
TypeScript复制
new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
resolve("操作成功完成");
}, 1000);
}).then((result) => {
console.log(result); // 输出: 操作成功完成
});
2. reject 的作用
reject 是一个函数,用于将 Promise 的状态从“未完成”(pending)变为“已拒绝”(rejected)。当异步操作失败时,调用 reject 函数,并传递错误信息作为参数。
示例
TypeScript复制
new Promise((resolve, reject) => {
// 模拟异步操作失败
setTimeout(() => {
reject("操作失败");
}, 1000);
}).catch((error) => {
console.error(error); // 输出: 操作失败
});
3. 使用场景
在鸿蒙 Next 5.0 中,resolve 和 reject 常用于处理网络请求、文件操作等异步任务。例如,封装一个网络请求模块时,可以根据请求结果调用 resolve 或 reject。
封装网络请求模块
TypeScript复制
import { http } from '@ohos.net.http';
function fetchData(url: string): Promise<any> {
return new Promise((resolve, reject) => {
let httpRequest = http.createHttp();
httpRequest.request(url, {
method: http.RequestMethod.GET,
expectDataType: http.HttpDataType.STRING
}, (err, data) => {
if (!err) {
resolve(data.result); // 请求成功,调用 resolve
} else {
reject(err); // 请求失败,调用 reject
}
httpRequest.destroy();
});
});
}
// 使用封装的网络请求模块
fetchData('https://api.example.com/data')
.then((result) => {
console.log(result); // 处理成功结果
})
.catch((error) => {
console.error(error); // 处理错误
});
总结
resolve:用于将Promise的状态变为“已完成”,并传递操作结果。reject:用于将Promise的状态变为“已拒绝”,并传递错误信息。- 在鸿蒙 Next 5.0 中,
resolve和reject常用于处理异步任务的结果,如网络请求、文件操作等。
通过合理使用 resolve 和 reject,可以更优雅地处理异步操作的成功与失败。