Path: blob/master/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js
2593 views
import AwaitValue from "./AwaitValue.js";1export default function AsyncGenerator(gen) {2var front, back;34function send(key, arg) {5return new Promise(function (resolve, reject) {6var request = {7key: key,8arg: arg,9resolve: resolve,10reject: reject,11next: null12};1314if (back) {15back = back.next = request;16} else {17front = back = request;18resume(key, arg);19}20});21}2223function resume(key, arg) {24try {25var result = gen[key](arg);26var value = result.value;27var wrappedAwait = value instanceof AwaitValue;28Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {29if (wrappedAwait) {30resume(key === "return" ? "return" : "next", arg);31return;32}3334settle(result.done ? "return" : "normal", arg);35}, function (err) {36resume("throw", err);37});38} catch (err) {39settle("throw", err);40}41}4243function settle(type, value) {44switch (type) {45case "return":46front.resolve({47value: value,48done: true49});50break;5152case "throw":53front.reject(value);54break;5556default:57front.resolve({58value: value,59done: false60});61break;62}6364front = front.next;6566if (front) {67resume(front.key, front.arg);68} else {69back = null;70}71}7273this._invoke = send;7475if (typeof gen["return"] !== "function") {76this["return"] = undefined;77}78}7980AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () {81return this;82};8384AsyncGenerator.prototype.next = function (arg) {85return this._invoke("next", arg);86};8788AsyncGenerator.prototype["throw"] = function (arg) {89return this._invoke("throw", arg);90};9192AsyncGenerator.prototype["return"] = function (arg) {93return this._invoke("return", arg);94};9596