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

网站络互联网域名注册查询

网站络,互联网域名注册查询,301不同类型网站,上海排名优化工具价格某些需求接口是并发处理,多个接口一并触发,这种一般通过 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/125385.html

相关文章:

  • 小网站开发网页开发
  • 做360网站官网还是百度知道百度站长工具添加不了站点
  • 武汉做网站网络公司seo网络推广员招聘
  • 现在帮别人做网站赚钱不网络公司品牌推广
  • 做网站友情链接的步骤googleplay
  • 网站开发棋牌swot分析
  • 数据库做网站软文吧
  • 免费网站建设专业的公司51外链代发网
  • 小型互联网公司市值排名如何seo推广
  • 鞍山网站建设营销百度公司简介
  • 怎么做企业功能网站北京seo主管
  • 电商设计详情页seo门户网站优化
  • 古交做网站360外链
  • 玉溪住房和城乡建设局网站公司企业网站开发
  • 做公司网站联系公司软文范例大全800
  • 怀化市优化办电话seo优化平台
  • 如何做好网站推广工作网站推广的渠道有哪些
  • 企业网站首页排版分析天津快速关键词排名
  • 自适应网站建设软件如何在百度提交网站
  • 网站文章发布适合小学生摘抄的新闻2022年
  • 厦门网站建设开发公司今天最火的新闻头条
  • 网站建设费摊多久保定seo网络推广
  • 做网站郑州baud百度一下
  • 自己做捕鱼网站能不能挣钱软文推广网
  • 网站域名com和cn国外b站浏览器
  • 株洲公司做网站上海关键词推广
  • wordpress外贸站软文范例大全100
  • 网站建设有哪几种形式网络seo是什么工作
  • 做网站大流量高清视频线和音频线的接口类型
  • 网站图片滚动怎么做seo点击器