{"id":16921030,"url":"https://github.com/crazylxr/pro-promise","last_synced_at":"2025-09-03T08:43:19.660Z","repository":{"id":200138584,"uuid":"704883644","full_name":"crazylxr/pro-promise","owner":"crazylxr","description":"promise 增强","archived":false,"fork":false,"pushed_at":"2024-02-01T13:16:56.000Z","size":90,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T12:51:04.641Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crazylxr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-14T11:50:52.000Z","updated_at":"2023-11-29T03:21:03.000Z","dependencies_parsed_at":"2024-02-01T14:44:58.114Z","dependency_job_id":null,"html_url":"https://github.com/crazylxr/pro-promise","commit_stats":null,"previous_names":["crazylxr/pro-promise"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazylxr%2Fpro-promise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazylxr%2Fpro-promise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazylxr%2Fpro-promise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crazylxr%2Fpro-promise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crazylxr","download_url":"https://codeload.github.com/crazylxr/pro-promise/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248441933,"owners_count":21104104,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T19:50:25.129Z","updated_at":"2025-04-11T16:39:53.585Z","avatar_url":"https://github.com/crazylxr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pro-promise\n\nProPromise 是一个 JavaScript/TypeScript 库，它通过添加超时功能并提供将回调风格的函数转换为 Promise 的实用程序，扩展了原生 Promise 的功能。\n\n[![NPM version](https://img.shields.io/npm/v/pro-promise.svg?style=flat)](https://npmjs.org/package/pro-promise)\n[![NPM downloads](http://img.shields.io/npm/dm/pro-promise.svg?style=flat)](https://npmjs.org/package/pro-promise)\n\n## 安装\n\n你可以通过 npm 安装 ProPromise：\n\n```bash\nnpm install pro-promise\n```\n\n## 使用\n\n### 超时功能\n\nProPromise 允许你为 Promise 设置超时，确保它不会无限期等待。你可以像这样使用它：\n\n```typescript\nimport Promise from 'pro-promise'\n\nconst myPromise = new Promise((resolve, reject) =\u003e {\n  // 模拟异步操作\n  setTimeout(() =\u003e {\n    resolve('Promise 成功解决')\n  }, 2000)\n})\n\n// 设置 1500 毫秒的超时\nmyPromise\n  .timeout(1500)\n  .then((result) =\u003e {\n    console.log(result)\n  })\n  .catch((error) =\u003e {\n    console.error(error)\n  })\n```\n\n### 将回调风格函数转换为 Promise\n\nProPromise 提供了一个静态方法 promisify，用于将回调风格的函数转换为 Promise。以下是一个示例：\n\n```typescript\nimport Promise from 'pro-promise'\n\nfunction exampleCallbackFunction(callback) {\n  setTimeout(() =\u003e {\n    callback(null, '回调返回的数据')\n  }, 1000)\n}\n\nconst promisifiedFunction = Promise.promisify(exampleCallbackFunction)\n\npromisifiedFunction()\n  .then((result) =\u003e {\n    console.log(result)\n  })\n  .catch((error) =\u003e {\n    console.error(error)\n  })\n```\n\n### 串联执行 Promise（chain）\n\n```typescript\nimport ProPromise from 'pro-promise'\n\nconst promises = [\n  () =\u003e Promise.resolve(1),\n  () =\u003e Promise.resolve(2),\n  () =\u003e Promise.resolve(3),\n]\n\nProPromise.chain(promises)\n  .then((results) =\u003e {\n    console.log(results) // 输出: [1, 2, 3]\n  })\n  .catch((error) =\u003e {\n    console.error('Error occurred:', error)\n  })\n```\n\n### 并发执行 Promise（concurrency）\n\n```typescript\nimport ProPromise from 'pro-promise'\n\nconst promises = [\n  () =\u003e Promise.resolve(1),\n  () =\u003e Promise.resolve(2),\n  () =\u003e Promise.resolve(3),\n  // 可以添加更多的异步操作函数\n]\n\nProPromise.concurrency(promises, 2)\n  .then((results) =\u003e {\n    console.log(results) // 输出并发执行后的结果数组\n  })\n  .catch((error) =\u003e {\n    console.error('Error occurred:', error)\n  })\n```\n\n## API\n\n### ProPromise\u003cT\u003e\n\n`ProPromise` 类扩展了原生的 `Promise` 类。它接受一个执行函数并提供了额外的方法：\n\n- `timeout(ms: number): ProPromise\u003cT\u003e`：为 `Promise` 添加超时。如果 `Promise` 在指定时间内不解决或拒绝，它将使用超时错误拒绝。\n\n- `static promisify\u003cT\u003e(fn: (...args: any[]) =\u003e void): (...args: any[]) =\u003e ProPromise\u003cT\u003e`：用于将回调风格函数转换为 `Promise` 的静态方法。\n- `chain\u003cT\u003e(promises: (() =\u003e Promise\u003cT\u003e)[]): Promise\u003cT[]\u003e`：依次执行一组返回 Promise 的函数，并收集它们的结果。\n- `concurrency\u003cT\u003e(promises: (() =\u003e Promise\u003cT\u003e)[], concurrency: number): Promise\u003cT[]\u003e`：并发执行一组 Promise，限制并发数为指定数量。\n\n## 许可证\n\n该项目基于 MIT 许可证进行许可。有关详细信息，请参阅 LICENSE 文件。\n\n## 贡献\n\n如果您想为 ProPromise 做出贡献，请打开一个问题或提交一个拉取请求。我们欢迎您的意见和贡献。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrazylxr%2Fpro-promise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrazylxr%2Fpro-promise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrazylxr%2Fpro-promise/lists"}