当前位置: 首页 > wzjs >正文

关于网站建设的英文歌禅城区网站建设

关于网站建设的英文歌,禅城区网站建设,wordpress 迅影网,个人优秀网站某些需求接口是并发处理,多个接口一并触发,这种一般通过 Promise.all 处理,但是有时候需要链式触发,也就是后一个根据前一个结果处理 所以就有了下面这个代码 /*** 链式触发器的配置选项* property {number} [timeout] - 超时时…

某些需求接口是并发处理,多个接口一并触发,这种一般通过 Promise.all 处理,但是有时候需要链式触发,也就是后一个根据前一个结果处理

所以就有了下面这个代码

/*** 链式触发器的配置选项* @property {number} [timeout] - 超时时间(毫秒),默认5000ms* @property {(result: any, index: number) => Promise<any>} [middleware] - 中间件函数,用于处理每个promise的结果*/
type ChainTriggerOptions = {timeout?: number;middleware?: (result: any, index: number) => Promise<any>;
};/*** 链式触发器 - 顺序执行一组异步函数,支持中间件处理和超时控制* @template T - 异步函数数组类型* @param {T} promises - 要顺序执行的异步函数数组* @param {ChainTriggerOptions} [options] - 配置选项* @returns {Promise<Array<Awaited<ReturnType<T[number]>>>>} - 返回所有异步函数结果的数组* @example* // 基本用法* chainTrigger([*   () => fetch('/api/data1'),*   () => fetch('/api/data2'),*   () => fetch('/api/data3')* ]).then(results => {*   console.log(results); // [data1, data2, data3]* });** @example* // 带中间件和超时的用法* chainTrigger([*   () => fetch('/api/user'),*   () => fetch('/api/orders')* ], {*   timeout: 10000,*   middleware: async (result, index) => {*     if (index === 0) {*       return { ...result, processed: true };*     }*     return result;*   }* });*/
export const chainTrigger = <T extends Array<() => Promise<any>>>(promises: T,options?: ChainTriggerOptions
): Promise<Array<Awaited<ReturnType<T[number]>>>> => {const { timeout = 5000, middleware } = options || {};return new Promise((resolve, reject) => {const results: any[] = [];let currentIndex = 0;let isTimedOut = false;const timer =timeout > 0? setTimeout(() => {isTimedOut = true;reject(new Error(`Chain trigger timed out after ${timeout}ms`));}, timeout): null;const executeNext = async () => {if (currentIndex >= promises.length || isTimedOut) {timer && clearTimeout(timer);resolve(results as Array<Awaited<ReturnType<T[number]>>>);return;}try {const promise = promises[currentIndex];let result = await promise();if (middleware) {result = await middleware(result, currentIndex);}results.push(result);currentIndex++;executeNext();} catch (error) {timer && clearTimeout(timer);reject(error);}};executeNext();});
};

可以根据示例直接使用,简洁简单

http://www.dtcms.com/wzjs/564896.html

相关文章:

  • 七牛云可以做网站的存储空间吗张家港做网站公司
  • 网站特效代码html人才招聘网最新招聘
  • 个人怎么做网站优化seo站长工具 论坛
  • 公司做网站需要服务器吗WordPress导航类主题主题
  • vr网站开发技术医院如何做网站策划?
  • 响应式企业网站设计前端开发工程师招聘
  • 双滦网站建设有没有做那事的网站
  • 网站专题效果图怎么做个人空间网站
  • 哈尔滨住房和城乡建设局网站首页500强室内设计公司排名
  • 互站网源码网站建设协议附件
  • 网站建设需要购买什么wordpress模板应用
  • 免费虚拟主机网站百度的网址是什么
  • 南昌定制网站开发费用贵阳观山湖区网站建设
  • 找网站建设需要问什么软件山东兽药网站建设
  • 建设一个网站需要什么人员工程资料外包公司
  • c2c平台怎么下载南山网站seo
  • 什么是网站站点建设介绍网站空间到期了怎么办
  • 网站建设单页中国建设银行河南省分行网站
  • 360网站seo怎么做公司宣传册设计样本下载
  • 如何查看网站的点击量赣州市城乡建设局网站
  • 潍坊网站建设价格低seo专员的工作内容
  • 邯郸企业网站建设旅游建设网站目的及功能定位
  • 个人网站设计流程步骤家居行业网站建设
  • 内江网站建设公司深圳设计外包服务
  • 网站推广策略方法谷歌浏览器中文手机版
  • 网站脑图怎么做广州网站整站优化
  • 网站报价表格暴雪时分电视剧免费观看
  • 义乌企业网站设计购买帝国cms做网站代理
  • 个人网站盈利模式企业邮箱china
  • 网站建设与管理案例教程第三版答案网络规划设计师哪个机构好