HarmonyOS Next 5.0 Promise: resolve 和 reject 作用

129 阅读2分钟

在鸿蒙 Next 5.0 中,resolvereject 是与 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 中,resolvereject 常用于处理网络请求、文件操作等异步任务。例如,封装一个网络请求模块时,可以根据请求结果调用 resolvereject

封装网络请求模块

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 中,resolvereject 常用于处理异步任务的结果,如网络请求、文件操作等。

通过合理使用 resolvereject,可以更优雅地处理异步操作的成功与失败。