Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/crazylxr/pro-promise
promise 增强
https://github.com/crazylxr/pro-promise
Last synced: about 1 month ago
JSON representation
promise 增强
- Host: GitHub
- URL: https://github.com/crazylxr/pro-promise
- Owner: crazylxr
- Created: 2023-10-14T11:50:52.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-01T13:16:56.000Z (10 months ago)
- Last Synced: 2024-02-01T14:34:39.858Z (10 months ago)
- Language: TypeScript
- Size: 87.9 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# pro-promise
ProPromise 是一个 JavaScript/TypeScript 库,它通过添加超时功能并提供将回调风格的函数转换为 Promise 的实用程序,扩展了原生 Promise 的功能。
[![NPM version](https://img.shields.io/npm/v/pro-promise.svg?style=flat)](https://npmjs.org/package/pro-promise)
[![NPM downloads](http://img.shields.io/npm/dm/pro-promise.svg?style=flat)](https://npmjs.org/package/pro-promise)## 安装
你可以通过 npm 安装 ProPromise:
```bash
npm install pro-promise
```## 使用
### 超时功能
ProPromise 允许你为 Promise 设置超时,确保它不会无限期等待。你可以像这样使用它:
```typescript
import Promise from 'pro-promise'const myPromise = new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
resolve('Promise 成功解决')
}, 2000)
})// 设置 1500 毫秒的超时
myPromise
.timeout(1500)
.then((result) => {
console.log(result)
})
.catch((error) => {
console.error(error)
})
```### 将回调风格函数转换为 Promise
ProPromise 提供了一个静态方法 promisify,用于将回调风格的函数转换为 Promise。以下是一个示例:
```typescript
import Promise from 'pro-promise'function exampleCallbackFunction(callback) {
setTimeout(() => {
callback(null, '回调返回的数据')
}, 1000)
}const promisifiedFunction = Promise.promisify(exampleCallbackFunction)
promisifiedFunction()
.then((result) => {
console.log(result)
})
.catch((error) => {
console.error(error)
})
```### 串联执行 Promise(chain)
```typescript
import ProPromise from 'pro-promise'const promises = [
() => Promise.resolve(1),
() => Promise.resolve(2),
() => Promise.resolve(3),
]ProPromise.chain(promises)
.then((results) => {
console.log(results) // 输出: [1, 2, 3]
})
.catch((error) => {
console.error('Error occurred:', error)
})
```### 并发执行 Promise(concurrency)
```typescript
import ProPromise from 'pro-promise'const promises = [
() => Promise.resolve(1),
() => Promise.resolve(2),
() => Promise.resolve(3),
// 可以添加更多的异步操作函数
]ProPromise.concurrency(promises, 2)
.then((results) => {
console.log(results) // 输出并发执行后的结果数组
})
.catch((error) => {
console.error('Error occurred:', error)
})
```## API
### ProPromise
`ProPromise` 类扩展了原生的 `Promise` 类。它接受一个执行函数并提供了额外的方法:
- `timeout(ms: number): ProPromise`:为 `Promise` 添加超时。如果 `Promise` 在指定时间内不解决或拒绝,它将使用超时错误拒绝。
- `static promisify(fn: (...args: any[]) => void): (...args: any[]) => ProPromise`:用于将回调风格函数转换为 `Promise` 的静态方法。
- `chain(promises: (() => Promise)[]): Promise`:依次执行一组返回 Promise 的函数,并收集它们的结果。
- `concurrency(promises: (() => Promise)[], concurrency: number): Promise`:并发执行一组 Promise,限制并发数为指定数量。## 许可证
该项目基于 MIT 许可证进行许可。有关详细信息,请参阅 LICENSE 文件。
## 贡献
如果您想为 ProPromise 做出贡献,请打开一个问题或提交一个拉取请求。我们欢迎您的意见和贡献。