regeneratorAsyncIterator.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = AsyncIterator;
  6. var _OverloadYield = require("./OverloadYield.js");
  7. var _regeneratorDefine = require("./regeneratorDefine.js");
  8. function AsyncIterator(generator, PromiseImpl) {
  9. if (!this.next) {
  10. (0, _regeneratorDefine.default)(AsyncIterator.prototype);
  11. (0, _regeneratorDefine.default)(AsyncIterator.prototype, typeof Symbol === "function" && Symbol.asyncIterator || "@asyncIterator", function () {
  12. return this;
  13. });
  14. }
  15. function invoke(method, arg, resolve, reject) {
  16. try {
  17. var result = generator[method](arg);
  18. var value = result.value;
  19. if (value instanceof _OverloadYield.default) {
  20. return PromiseImpl.resolve(value.v).then(function (value) {
  21. invoke("next", value, resolve, reject);
  22. }, function (err) {
  23. invoke("throw", err, resolve, reject);
  24. });
  25. }
  26. return PromiseImpl.resolve(value).then(function (unwrapped) {
  27. result.value = unwrapped;
  28. resolve(result);
  29. }, function (error) {
  30. return invoke("throw", error, resolve, reject);
  31. });
  32. } catch (error) {
  33. reject(error);
  34. }
  35. }
  36. var previousPromise;
  37. function enqueue(method, i, arg) {
  38. function callInvokeWithMethodAndArg() {
  39. return new PromiseImpl(function (resolve, reject) {
  40. invoke(method, arg, resolve, reject);
  41. });
  42. }
  43. return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
  44. }
  45. (0, _regeneratorDefine.default)(this, "_invoke", enqueue, true);
  46. }
  47. //# sourceMappingURL=regeneratorAsyncIterator.js.map