1.0.3 • Published 3 years ago
rx-promise v1.0.3
RxPromise
魔改 Promise 使其支持
.retry
.retryWhen
链式调用
Features
- 重试次数
retry
: 当源头 Promise 触发了 reject , 该方法不会继续传播失败而是重新执行源头直到达到最大重试次数(由数字参数指定).注意: 当参数为负数时,表示一直重试直到成功.
- 重试函数
retryWhen
: 当源头 Promise 触发了 resolve , 该方法会将 resolve 的结果为参数传入计算(支持异步)直到计算的结果符合预期才继续传播. 注意: 该方法不会截断源头和计算的错误异常,而是直接终止重试并将错误继续传递.
- 延时
delay
: 根据给定时间(单位: 秒)延迟执行异步操作. 注意: 当参数为负数时,将一直处于 pengding.
- 防抖
debounceTime
: 取消在两次(延时)执行之间小于指定时间的异步操作. 注意: 当参数非正数,立即执行异步操作.
- 节流
throttleTime
: 当指定的持续时间经过后立即执行异步操作. 注意: 当参数非正数,立即执行异步操作.
Usage
# install
yarn add rx-promise
# or
npm install rx-promise
const RxPromise = require('RxPromise');
// or
import RxPromise from 'RxPromise';
// 根据业务场景是否需要替换Promise
Promise = RxPromise;
const target = new RxPromise((resolve, reject) => {
// code
});
target
.retry(-1) // 执行直到被resolve
.retryWhen(async resolveValue => /* 判断 */) // 继续执行满足条件
.then((value) => {
// resolve value
})
.catch((err) => {
// catch err code
});
Example
.retry
const target = new RxPromise((resolve, reject) => {
// code
});
target
.retry(3)
.then((value) => {
// resolve value
})
.catch((err) => {
// catch err code
});
.retryWhen
const target = new RxPromise((resolve, reject) => {
// code
});
target
.retryWhen(async resolveValue => {
// retry method
if (flag) {
return await TrueFn
} else {
return false
}
})
.then((value) => {
// resolve value
})
.catch((err) => {
// catch err code
});
.delay
const target = new RxPromise((resolve, reject) => {
// code
});
target
.delay(0)
.delay(1)
.delay(2)
.then((value) => {
// delay time = 0 + 1 + 2 second
// resolve value
})
.catch((err) => {
// catch err code
});
.debounceTime
const target = new RxPromise((resolve, reject) => {
// code
});
target
.debounceTime(0.3) // 0.3 second
.then((value) => {
// resolve value
})
.catch((err) => {
// catch err code
});
.throttleTime
const target = new RxPromise((resolve, reject) => {
// code
});
target
.throttleTime(1) // 1 second
.then((value) => {
// resolve value
})
.catch((err) => {
// catch err code
});