UNPKG

1.17 kBJavaScriptView Raw
1
2async function * makeAsyncRangeIterator (start = 0, end = Infinity, step = 1, delay = 10) {
3 let iterationCount = 0
4 for (let i = start; i < end; i += step) {
5 iterationCount++
6 yield new Promise((resolve, reject) => {
7 setTimeout(() => {
8 resolve(i)
9 }, delay)
10 })
11 }
12 return iterationCount
13 }
14
15function makeAsyncHasNextRangeIterator (start = 0, end = Infinity, step = 1) {
16 let iterationCount = start
17 return {
18 hasNext: function () {
19 return iterationCount < end
20 },
21 next: function () {
22 return new Promise((resolve, reject) => {
23 setTimeout(() => {
24 resolve(iterationCount++)
25 }, 10)
26 })
27 }
28 }
29}
30
31function makeArrayIterator (dataArray) {
32 let iterationCount = 0
33 return {
34 hasNext: function () {
35 return iterationCount < dataArray.length
36 },
37 next: function () {
38 return dataArray[iterationCount++]
39 }
40 }
41 }
42
43export {
44 makeArrayIterator,
45 makeAsyncRangeIterator,
46 makeAsyncHasNextRangeIterator
47}