Projekt

Obecné

Profil

Stáhnout (1.03 KB) Statistiky
| Větev: | Revize:
1
function _asyncGeneratorDelegate(inner, awaitWrap) {
2
  var iter = {},
3
      waiting = false;
4

    
5
  function pump(key, value) {
6
    waiting = true;
7
    value = new Promise(function (resolve) {
8
      resolve(inner[key](value));
9
    });
10
    return {
11
      done: false,
12
      value: awaitWrap(value)
13
    };
14
  }
15

    
16
  ;
17

    
18
  if (typeof Symbol === "function" && Symbol.iterator) {
19
    iter[Symbol.iterator] = function () {
20
      return this;
21
    };
22
  }
23

    
24
  iter.next = function (value) {
25
    if (waiting) {
26
      waiting = false;
27
      return value;
28
    }
29

    
30
    return pump("next", value);
31
  };
32

    
33
  if (typeof inner["throw"] === "function") {
34
    iter["throw"] = function (value) {
35
      if (waiting) {
36
        waiting = false;
37
        throw value;
38
      }
39

    
40
      return pump("throw", value);
41
    };
42
  }
43

    
44
  if (typeof inner["return"] === "function") {
45
    iter["return"] = function (value) {
46
      if (waiting) {
47
        waiting = false;
48
        return value;
49
      }
50

    
51
      return pump("return", value);
52
    };
53
  }
54

    
55
  return iter;
56
}
57

    
58
module.exports = _asyncGeneratorDelegate;
(8-8/80)