Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/haimkastner/pull-behavior
Pull Behavior is a lightweight and very simple mechanism to retrieve data from a module that cannot be referenced directl
https://github.com/haimkastner/pull-behavior
Last synced: about 1 month ago
JSON representation
Pull Behavior is a lightweight and very simple mechanism to retrieve data from a module that cannot be referenced directl
- Host: GitHub
- URL: https://github.com/haimkastner/pull-behavior
- Owner: haimkastner
- License: mit
- Created: 2019-02-13T21:43:28.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-02-13T22:46:10.000Z (about 6 years ago)
- Last Synced: 2024-12-16T23:35:10.473Z (2 months ago)
- Language: TypeScript
- Size: 10.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pull-behavior
Pull Behavior is a lightweight and very simple mechanism to retrieve data from a module that cannot be referenced directly.
The PullBehavior needs to be a member in a class, and the class holder should set the pull function by calling the 'setPullMethod'.
then the inner class can use 'pull' method to get the pulled data.
For example: when module 'A' reference module 'B' and 'B' can't reference back to 'A' because of recursive issue.
but some time the module 'B' needs data from module 'A', then PullBehavior help us. the PullBehavior is a member in 'B'
and when 'A' creates 'B' it also init 'setPullMethod' and now 'B' can retrieve data from 'A'.## Install via NPM:
```bash
npm install pull-behavior
```
## In main module
```typescriptclass MainModule {
/** Hold sub module */
private subModule: SubModule = new SubModule();constructor() {
/** Set pull method to allow sub module get data any time he wants. */
this.subModule.retriveData.setPullMethod(async (): Promise => {
return {};
});this.subModule.someNormalMethod();
}
}```
## In sub module
```typescriptimport { PullBehavior } from 'pull-behavior';
export class SubModule {
/** Pull behavior member. */
public retriveData: PullBehavior = new PullBehavior();constructor() {
/** Print current data each 5 seconds */
setInterval(async () => {
if (!this.retriveData.isPullingAvailble) {
console.log('SubModule instance holder not set pull method yet, so the pulling not avalible.')
return;
}const pulledData = await this.retriveData.pull();
console.log(`Current data: ${pulledData}`);}, 5000);
}/** Example or noraml methos */
public someNormalMethod() {
}
}```
To pulling in synchronous, use same API with sync in name.
```typescript
this.retriveData.isPullingSyncAvailble === false
```For real example see `example` folder.
And to watch it in live, press `node dist\example\mainModule.js`.