source: imaps-frontend/node_modules/core-js/internals/async-iterator-map.js

main
Last change on this file was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 2 weeks ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 1.9 KB
Line 
1'use strict';
2var call = require('../internals/function-call');
3var aCallable = require('../internals/a-callable');
4var anObject = require('../internals/an-object');
5var isObject = require('../internals/is-object');
6var getIteratorDirect = require('../internals/get-iterator-direct');
7var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
8var createIterResultObject = require('../internals/create-iter-result-object');
9var closeAsyncIteration = require('../internals/async-iterator-close');
10
11var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
12 var state = this;
13 var iterator = state.iterator;
14 var mapper = state.mapper;
15
16 return new Promise(function (resolve, reject) {
17 var doneAndReject = function (error) {
18 state.done = true;
19 reject(error);
20 };
21
22 var ifAbruptCloseAsyncIterator = function (error) {
23 closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
24 };
25
26 Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
27 try {
28 if (anObject(step).done) {
29 state.done = true;
30 resolve(createIterResultObject(undefined, true));
31 } else {
32 var value = step.value;
33 try {
34 var result = mapper(value, state.counter++);
35
36 var handler = function (mapped) {
37 resolve(createIterResultObject(mapped, false));
38 };
39
40 if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
41 else handler(result);
42 } catch (error2) { ifAbruptCloseAsyncIterator(error2); }
43 }
44 } catch (error) { doneAndReject(error); }
45 }, doneAndReject);
46 });
47});
48
49// `AsyncIterator.prototype.map` method
50// https://github.com/tc39/proposal-iterator-helpers
51module.exports = function map(mapper) {
52 anObject(this);
53 aCallable(mapper);
54 return new AsyncIteratorProxy(getIteratorDirect(this), {
55 mapper: mapper
56 });
57};
Note: See TracBrowser for help on using the repository browser.