32 lines
651 B
JavaScript
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]);
|
|
});
|