function Gen(time) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(time); }, time); });}// async function test() {// let arr = [Gen(2000), Gen(100), Gen(3000)];// for (let item of arr) {// console.log(Date.now(), await item.then(console.log));// }// }// test();// async function test() {// let arr = [Gen(2000), Gen(100), Gen(3000)];// for await (let item of arr) {// console.log(Date.now(), item);// }// }// test();const obj = { count: 0, Gen(time) { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ done: false, value: time }); }, time); }); }, [Symbol.asyncIterator]() { let self = this; return { next() { self.count++; if (self.count < 4) { return self.Gen(Math.random() * 1000); } else { return Promise.resolve({ done: true, value: "" }); } } }; }};async function test() { for await (let item of obj) { console.log(Date.now(), item); }}test();