UNPKG

ut2

Version:

一个现代 JavaScript 实用工具库。[点击查看在线文档]。

44 lines (41 loc) 1.58 kB
import { __awaiter, __generator, __read } from 'tslib'; import sleep from './sleep.js'; import tryit from './tryit.js'; function retry(fn, options) { return __awaiter(this, void 0, void 0, function () { var _a, _b, times, delay, backoff, exit, i, _c, err, result; return __generator(this, function (_d) { switch (_d.label) { case 0: _a = options || {}, _b = _a.times, times = _b === void 0 ? 3 : _b, delay = _a.delay, backoff = _a.backoff, exit = _a.exit; i = 1; _d.label = 1; case 1: if (!(i <= times)) return [3, 7]; return [4, tryit(fn)()]; case 2: _c = __read.apply(void 0, [_d.sent(), 2]), err = _c[0], result = _c[1]; if (!err) return [2, result]; if ((exit && exit(err, i)) || i === times) throw err; if (!delay) return [3, 4]; return [4, sleep(delay)]; case 3: _d.sent(); _d.label = 4; case 4: if (!backoff) return [3, 6]; return [4, sleep(backoff(i))]; case 5: _d.sent(); _d.label = 6; case 6: i++; return [3, 1]; case 7: return [2]; } }); }); } export { retry as default };