https://github.com/distributedlife/royal-sampler
A lib for self-sampling code
https://github.com/distributedlife/royal-sampler
Last synced: 9 months ago
JSON representation
A lib for self-sampling code
- Host: GitHub
- URL: https://github.com/distributedlife/royal-sampler
- Owner: distributedlife
- License: mit
- Created: 2016-02-22T02:55:08.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-10-29T07:07:11.000Z (over 9 years ago)
- Last Synced: 2025-08-20T23:52:14.473Z (10 months ago)
- Language: JavaScript
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# royal-sampler
For self-sampling code.

## Show your sorcery
```javascript
import {execute} from 'royal-sampler'
function mySweetFunction () {
return 'sweet';
}
let sampledFunction = execute(mySweetFunction).every(2).calls();
console.log(sampledFunction()); //undefined
console.log(sampledFunction()); //sweet
console.log(sampledFunction()); //undefined
console.log(sampledFunction()); //sweet
```
You can be slightly more DSL about it.
```javascript
execute(mySweetFunction).every().call();
execute(mySweetFunction).every(5).calls();
```
## What about time based sampling?
If your callback accepts a delta as the first parameter, then you can use a second set of helpers to have your code execute a set number of times per period.
```javascript
function mySweetFunction (delta) {
return 'sweet';
}
execute(mySweetFunction).every().millisecond();
execute(mySweetFunction).every().second();
execute(mySweetFunction).every().minute();
execute(mySweetFunction).every().hour();
execute(mySweetFunction).every(234).milliseconds();
execute(mySweetFunction).every(25).seconds();
execute(mySweetFunction).every(33).minutes();
execute(mySweetFunction).every(5).hours();
execute(mySweetFunction).about(1).timesPer.second();
execute(mySweetFunction).about(4).timesPer.minute();
var sampled = execute(mySweetFunction).about(7).timesPer.hour();
sampled(45);
```
## Do I have to call my function
Yes. This package does not do any scheduling.
## Is the delta important
Yes. We use that to determine when to call your function. If you said 1 time per second, after the sum of the delta reaches 1000, your code executes.
## What about other variables
All variables get passed through to your function
```javascript
function myFunction (delta, a, b, c) {
console.log(a, b, c);
}
var sampled = execute(myFunction).every().second();
sampled(15, 1, 2, 3); // 1, 2, 3
```
## Does it ensure my code executes?
No, this code is for _sampling_, not for _scheduling_. Put your code in a place where it will be call frequently. `requestAnimationFrame` and `setInterval` are good places to start.
# Authors
- [Ryan Boucher](https://github.com/distributedlife)
# License
[MIT](https://tldrlegal.com/license/mit-license)