Add repeatGenerator
This commit is contained in:
27
snippets/repeatGenerator.md
Normal file
27
snippets/repeatGenerator.md
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
title: repeatGenerator
|
||||
tags: function,generator,advanced
|
||||
---
|
||||
|
||||
Creates a generator, repeating the given value indefinitely.
|
||||
|
||||
- Use a non-terminating `while` loop, that will `yield` a value every time `Generator.prototype.next()` is called.
|
||||
- Use the return value of the `yield` statement to update the returned value if the passed value is not `undefined`.
|
||||
|
||||
```js
|
||||
const repeatGenerator = function* (val) {
|
||||
let v = val;
|
||||
while (true) {
|
||||
let newV = yield v;
|
||||
if (newV !== undefined) v = newV;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
```js
|
||||
const repeater = repeatGenerator(5);
|
||||
repeater.next(); // { value: 5, done: false }
|
||||
repeater.next(); // { value: 5, done: false }
|
||||
repeater.next(4); // { value: 4, done: false }
|
||||
repeater.next(); // { value: 4, done: false }
|
||||
```
|
||||
Reference in New Issue
Block a user