2021-07-21 19:12:18 +02:00

32 lines
651 B
JavaScript

let resolve;
let promise = new Promise((r) => (resolve = r));
let iterable = {
[Symbol.asyncIterator || "@@asyncIterator"]() {
return {
next: () => promise,
};
},
};
let values = [];
return Promise.all([
async function () {
for await (let value of iterable) {
values.push(value);
}
}(),
async function () {
resolve({ value: 0, done: false });
promise = new Promise((r) => (resolve = r));
await null;
resolve({ value: 1, done: false });
promise = new Promise((r) => (resolve = r));
resolve({ value: undefined, done: true });
}(),
]).then(() => {
expect(values).toEqual([0, 1]);
});