compose.js 536 B

12345678910111213141516171819
  1. /**
  2. * 复合拦截器
  3. * @example compose((request, next) => {}, (request, next) => {})
  4. */
  5. export function compose(...interceptors) {
  6. return (request, next) => {
  7. const combined = (index) => {
  8. if (index === interceptors.length) {
  9. // 结尾
  10. return next();
  11. }
  12. else {
  13. const interceptor = interceptors[index];
  14. return interceptor(request, () => combined(index + 1));
  15. }
  16. };
  17. return combined(0);
  18. };
  19. }