{"id":16874518,"url":"https://github.com/joway/timer-exector","last_synced_at":"2026-05-19T02:03:59.557Z","repository":{"id":75055951,"uuid":"127427179","full_name":"joway/timer-exector","owner":"joway","description":"Exec events when it hit time wait limit or queue size limit ","archived":false,"fork":false,"pushed_at":"2019-04-09T10:46:32.000Z","size":44,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-28T02:05:49.567Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joway.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-30T12:43:13.000Z","updated_at":"2018-05-02T13:33:01.000Z","dependencies_parsed_at":"2023-02-24T03:30:23.747Z","dependency_job_id":null,"html_url":"https://github.com/joway/timer-exector","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"8ec15ddfea25245387bb9f4b394fbd08266d0d71"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/joway/timer-exector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joway%2Ftimer-exector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joway%2Ftimer-exector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joway%2Ftimer-exector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joway%2Ftimer-exector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joway","download_url":"https://codeload.github.com/joway/timer-exector/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joway%2Ftimer-exector/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264765657,"owners_count":23660608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T15:33:07.193Z","updated_at":"2026-05-19T02:03:59.469Z","avatar_url":"https://github.com/joway.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Timer Exector\n\n[![npm](https://img.shields.io/npm/v/timer-exector.svg)](https://www.npmjs.com/package/timer-exector)\n[![npm](https://img.shields.io/npm/dy/timer-exector.svg)](https://www.npmjs.com/package/timer-exector)\n\n## Purpose\n\nExec all events when hit the `maxQueueSize ` or `maxTimeWait` .\n\nYou can extends class `TimeExector` and implement `exec(events: any[]){}` method .\n\n## Usage\n\n### Install\n\n```\n\u003e npm i timer-exector -S\n```\n\n### Import Class\n\n#### TypeScript\n\n```ts\nimport TimeExector from 'time-exector'\n```\n\n#### JavaScript\n\n```js\nconst TimeExector = require('time-exector').default\n```\n\n### Extends class\n\n```js\nclass DemoTimeExector extends TimeExector {\n  async exec(events: any[]): Promise\u003cboolean\u003e {\n    events.forEach(event =\u003e {\n      console.log(event)\n    })\n    return true\n  }\n}\n```\n\n### Create exector instance\n\n```js\nconst exector = new DemoTimeExector({\n  maxQueueSize: 3,\n  maxTimeWait: 3 * 1000,\n})\n```\n\n### Start the exector before your application start\n\n```js\nexector.start()\n```\n\n### Exit the exector and wait for every events has been executed .\n\n```js\nawait exector.exit()\n```\n\n## Options\n\n#### maxQueueSize : \n\nIf the queue's length \u003e= `maxQueueSize ` , exec all events immediately and empty the queue . It will be disable when set as `-1` . Default value is `32` .\n\n### maxTimeWait : \n\nIf there is no exec for `maxTimeWait` ms , exec all events immediately . It will be disable when set as `-1` . Default value is `10000` .\n\n## Example\n\n```js\nconst bluebird = require('bluebird')\nconst TimeExector = require('time-exector').default\n\nclass DemoTimeExector extends TimeExector {\n  async exec(events) {\n    events.forEach(event =\u003e {\n      console.log(event)\n    })\n    return true\n  }\n}\n\nconst events = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\nconst exector = new DemoTimeExector({\n  maxQueueSize: 3,\n  maxTimeWait: 3 * 1000,\n})\nconsole.log('start')\nexector.start()\nconst main = async () =\u003e {\n  for (const event of events) {\n    exector.enqueue(event)\n    await bluebird.delay(700)\n  }\n  await exector.exit()\n  process.exit(0)\n}\nmain()\n\n// output:\n// start\n// 0\n// 1\n// 2\n// 3\n// 4\n// 5\n// 6\n// 7\n// 8\n// 9\n// 10\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoway%2Ftimer-exector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoway%2Ftimer-exector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoway%2Ftimer-exector/lists"}