Compass helpers for browser platforms
    Preparing search index...

    Function promiseTask

    • Type Parameters

      • TResult = unknown
      • TErrorExt extends Record<string, unknown> = Record<string, unknown>

      Parameters

      • promise: Promise<TResult>

        需要处理的 Promise 对象

      • OptionalerrorExt: TErrorExt

        希望附加到错误对象上的额外属性,用于错误分类或上下文信息

      Returns Promise<[null, TResult] | [Error & TErrorExt, null]>

      返回一个 Promise,解析为 [error, result] 元组

      • 成功时:[null, result]
      • 失败时:[error, null]

      异步任务处理工具,将 Promise 的结果转换为 [error, result] 元组形式,避免使用 try-catch

      当 promise 参数不是 Promise 对象时抛出错误

      // 基本用法
      const [error, result] = await promiseTask(fetch('/api/user'));
      if (error) {
      console.error('请求失败:', error.message);
      return;
      }
      console.log('用户数据:', result);
      // 带错误扩展信息
      const [error, data] = await promiseTask(
      fetchUserData(userId),
      { context: 'user-profile', userId }
      );
      if (error) {
      console.error('获取用户资料失败:', {
      message: error.message,
      context: error.context,
      userId: error.userId
      });
      return;
      }
      // 在循环中使用,避免中断
      const results = [];
      for (const url of urls) {
      const [error, response] = await promiseTask(fetch(url));
      if (error) {
      console.warn(`跳过失败的请求 ${url}:`, error.message);
      continue;
      }
      results.push(response);
      }