租房小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
911 B

3 months ago
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.retry = void 0;
  4. function retry(func, retryMax, config = {}) {
  5. let retryNum = 0;
  6. const { retryDelay = 500, errorHandler = () => true } = config;
  7. const funcR = (...arg) => {
  8. return new Promise((resolve, reject) => {
  9. func(...arg)
  10. .then(result => {
  11. retryNum = 0;
  12. resolve(result);
  13. })
  14. .catch(err => {
  15. if (retryNum < retryMax && errorHandler(err)) {
  16. retryNum++;
  17. setTimeout(() => {
  18. resolve(funcR(...arg));
  19. }, retryDelay);
  20. }
  21. else {
  22. retryNum = 0;
  23. reject(err);
  24. }
  25. });
  26. });
  27. };
  28. return funcR;
  29. }
  30. exports.retry = retry;