- Notifications
You must be signed in to change notification settings - Fork3
It can flexibly control async task, ignore the order of sending and receiving, allow binding of asynchronous tasks in pending state, and support producer consumer mode and order mode
License
TNT-03/async-task-mapping
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
It can make asynchronous tasks that promise cannot complete, ignore the order of sending and receiving, allow binding of asynchronous tasks in pending status, allow triggering a task in multiple functions, and support producer consumer mode and order mode.
English |简体中文
The async-task-mapping library does not use any third-party dependency packages and does not limit the technology stack.
npm i async-task-mapping --save
version
import{createTaskList}from"async-task-mapping";constasyncTask=createTaskList({ordered:true,taskCount:2,resolveCount:2,});setTimeout(async()=>{// A Promise.resolve is returned here. You can use either async/await or .then.const{ list, dataMap}=awaitasyncTask;console.log("data-1",list[0]);// orasyncTask.then(({ list, dataMap})=>{console.log("data-1",list[0]);});},100);setTimeout(async()=>{const{ list, dataMap}=awaitasyncTask;console.log("data-2",dataMap.res2);},200);setTimeout(()=>{asyncTask.pushResolve("response1");},300);setTimeout(()=>{asyncTask.pushResolve("response2","res2");},400);
You can use these functions in different methods. The result of the above code is:
// time 200: request-2// time 300: data-1 response1// time 400: data-2 response2
| name | description | default |
|---|---|---|
| ordered | Is it orderly | false |
| taskCount | Number of times to access data | 1 |
| resolveCount | Increase the number of times of data | 1 |
| name | description | returned data structure |
|---|---|---|
| then* | The original method of promise | task.then(({list, dataMap})=>{}) |
| pushResolve | Used to add data | pushResolve(data, name), Not required, data of Promise.resolve |
| clear | Clear all statuses | -- |
| paused | pause task | -- |
| running | continue matching tasks | -- |
| getStatus | Get current status | { // Whether to complete all request binding requestDone: false, // Whether to complete all pushResolve responseDone: false, //Number of requests bound requestCount: 1 (Number of requests bound), // Number of pushResolve complete responseCount: 1 (Number of pushResolve completed) } |
The request and response can be out of order.
import{createTaskOrder}from"async-task-mapping";consttaskOrder=createTaskOrder();setTimeout(async()=>{// A Promise.resolve is returned here. You can use either async/await or .then.constdata=awaittaskOrder;console.log("data1",data);},230);setTimeout(async()=>{constdata=awaittaskOrder;console.log("data2",data);},500);setTimeout(()=>{taskOrder.pushResolve("resolve1");},200);setTimeout(()=>{taskOrder.pushResolve("resolve2");},300);setTimeout(()=>{taskOrder.pushResolve("resolve3");},400);
You can use these functions in different methods. The result of the above code is:
// time 230: data1 resolve1// time 500: data2 resolve2
| name | description | returned data structure |
|---|---|---|
| pushResolve | Used to add data | -- |
| clear | Clear all statuses | -- |
| paused | pause task | -- |
| running | continue matching tasks | -- |
| getStatus | Get current status | { //Number of incomplete matching requests pendingRequests: 0, //Number of responses that have not completed matching pendingResponses: 0 } |
| getLastCompletedTask | Get the data matching the last request with the response | -- |
MIT.
About
It can flexibly control async task, ignore the order of sending and receiving, allow binding of asynchronous tasks in pending state, and support producer consumer mode and order mode
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.