Skip to content

Commit

Permalink
simplify
Browse files Browse the repository at this point in the history
  • Loading branch information
zloirock committed Jul 24, 2022
1 parent 4d107e1 commit ae6018e
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions packages/core-js/internals/async-iterator-create-proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,19 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
} return { exit: false, value: state };
};

var awaiting = function (state, promise) {
if (IS_GENERATOR) {
state.awaiting = promise;
var clean = function () {
if (state.awaiting === promise) state.awaiting = null;
};
promise.then(clean, clean);
} return promise;
};

var enqueue = function (state, asyncHandler) {
return state.awaiting ? state.awaiting = state.awaiting.then(asyncHandler, asyncHandler) : asyncHandler();
var enqueue = function (state, handler) {
var task = function () {
var promise = handler();
if (IS_GENERATOR) {
state.awaiting = promise;
var clean = function () {
if (state.awaiting === promise) state.awaiting = null;
};
promise.then(clean, clean);
} return promise;
};

return state.awaiting ? state.awaiting = state.awaiting.then(task, task) : task();
};

var AsyncIteratorProxyPrototype = defineBuiltIns(create(AsyncIteratorPrototype), {
Expand All @@ -66,7 +67,7 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
var handlerError = handlerCompletion.error;
var value = handlerCompletion.value;
if (handlerError) state.done = true;
return awaiting(state, handlerError ? Promise.reject(value) : Promise.resolve(value));
return handlerError ? Promise.reject(value) : Promise.resolve(value);
});
},
'return': function () {
Expand All @@ -75,7 +76,7 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
var state = stateCompletion.value;

return exit ? state : enqueue(state, function () {
return awaiting(state, new Promise(function (resolve, reject) {
return new Promise(function (resolve, reject) {
var iterator = state.iterator;
var innerIterator = state.innerIterator;
state.done = true;
Expand All @@ -90,7 +91,7 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
anObject(result);
resolve({ done: true, value: undefined });
}, reject);
}));
});
});
}
});
Expand Down

0 comments on commit ae6018e

Please sign in to comment.