asyncGeneratorDelegate.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. var _Symbol$iterator = require("../core-js/symbol/iterator");
  2. var _Symbol = require("../core-js/symbol");
  3. var _Promise = require("../core-js/promise");
  4. function _asyncGeneratorDelegate(inner, awaitWrap) {
  5. var iter = {},
  6. waiting = false;
  7. function pump(key, value) {
  8. waiting = true;
  9. value = new _Promise(function (resolve) {
  10. resolve(inner[key](value));
  11. });
  12. return {
  13. done: false,
  14. value: awaitWrap(value)
  15. };
  16. }
  17. ;
  18. if (typeof _Symbol === "function" && _Symbol$iterator) {
  19. iter[_Symbol$iterator] = function () {
  20. return this;
  21. };
  22. }
  23. iter.next = function (value) {
  24. if (waiting) {
  25. waiting = false;
  26. return value;
  27. }
  28. return pump("next", value);
  29. };
  30. if (typeof inner["throw"] === "function") {
  31. iter["throw"] = function (value) {
  32. if (waiting) {
  33. waiting = false;
  34. throw value;
  35. }
  36. return pump("throw", value);
  37. };
  38. }
  39. if (typeof inner["return"] === "function") {
  40. iter["return"] = function (value) {
  41. if (waiting) {
  42. waiting = false;
  43. return value;
  44. }
  45. return pump("return", value);
  46. };
  47. }
  48. return iter;
  49. }
  50. module.exports = _asyncGeneratorDelegate;