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

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.0 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 try {
27 Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
28 try {
29 if (anObject(step).done) {
30 state.done = true;
31 resolve(createIterResultObject(undefined, true));
32 } else {
33 var value = step.value;
34 try {
35 var result = mapper(value, state.counter++);
36
37 var handler = function (mapped) {
38 resolve(createIterResultObject(mapped, false));
39 };
40
41 if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
42 else handler(result);
43 } catch (error2) { ifAbruptCloseAsyncIterator(error2); }
44 }
45 } catch (error) { doneAndReject(error); }
46 }, doneAndReject);
47 } catch (error) { doneAndReject(error); }
48 });
49});
50
51// `AsyncIterator.prototype.map` method
52// https://github.com/tc39/proposal-async-iterator-helpers
53module.exports = function map(mapper) {
54 anObject(this);
55 aCallable(mapper);
56 return new AsyncIteratorProxy(getIteratorDirect(this), {
57 mapper: mapper
58 });
59};
Note: See TracBrowser for help on using the repository browser.