Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. import {sync} from "./sync";
  2. import {handleError} from "./catchError";
  3.  
  4. export function raceOnTime(generator, timeOut) {
  5. return (new Promise((resolve, reject) => {
  6. let _resolve;
  7.  
  8. const timer = setTimeout(() => {
  9. reject({error: new Error('timeout')});
  10. }, timeOut);
  11.  
  12. const done = () => {
  13. _resolve();
  14. resolve({success: 'ok'});
  15. clearTimeout(timer);
  16. };
  17.  
  18. new Promise((resolve) => {
  19. _resolve = resolve;
  20.  
  21. sync(function*() {
  22. try {
  23. yield* generator(done);
  24. } catch (error) {
  25. handleError(error);
  26. }
  27. });
  28.  
  29. }).then();
  30. }));
  31. }
  32.  
  33.  
  34. // example
  35.  
  36. function* categoryListController(done) {
  37. loading(true);
  38. const {error, data} = yield (new swagger.CategoryApi())
  39. .categoryListGet(select('user.token'), {
  40. ...select('queries.channel', {}),
  41. def: true
  42. });
  43.  
  44. done();
  45. if (!error) {
  46. dispatch(categoryListAction(data));
  47.  
  48. loading(false);
  49. } else {
  50. throwError("onCategoryEnterMiddleWare", function () {
  51. navigate('/v1/login');
  52. });
  53. }
  54. }
  55.  
  56. export default (nextState, replace, next) => sync(function*() {
  57. try {
  58. yield* isLoginMiddleware();
  59. let {error} = yield raceOnTime(categoryListController, 20000);
  60. if (error)
  61. navigate('/v1/login');
  62.  
  63. next();
  64. } catch (error) {
  65. handleError(error);
  66. }
  67. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement