1. function Gen(time) {
    2. return new Promise((resolve, reject) => {
    3. setTimeout(() => {
    4. resolve(time);
    5. }, time);
    6. });
    7. }
    8. // async function test() {
    9. // let arr = [Gen(2000), Gen(100), Gen(3000)];
    10. // for (let item of arr) {
    11. // console.log(Date.now(), await item.then(console.log));
    12. // }
    13. // }
    14. // test();
    15. // async function test() {
    16. // let arr = [Gen(2000), Gen(100), Gen(3000)];
    17. // for await (let item of arr) {
    18. // console.log(Date.now(), item);
    19. // }
    20. // }
    21. // test();
    22. const obj = {
    23. count: 0,
    24. Gen(time) {
    25. return new Promise((resolve, reject) => {
    26. setTimeout(() => {
    27. resolve({ done: false, value: time });
    28. }, time);
    29. });
    30. },
    31. [Symbol.asyncIterator]() {
    32. let self = this;
    33. return {
    34. next() {
    35. self.count++;
    36. if (self.count < 4) {
    37. return self.Gen(Math.random() * 1000);
    38. } else {
    39. return Promise.resolve({
    40. done: true,
    41. value: ""
    42. });
    43. }
    44. }
    45. };
    46. }
    47. };
    48. async function test() {
    49. for await (let item of obj) {
    50. console.log(Date.now(), item);
    51. }
    52. }
    53. test();