Skip to content

07akioni/create-merged-request

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

create-merged-request · npm version

Merge scattered requests into one, distribute corresponding result to requestor.

Install

npm i create-merged-request rxjs # Please note that rxjs is peer dependency of it

Usage

For example if you have tons of user query in different components and you want to combine theme into one.

import { createMergedRequest } from 'create-merged-request'

// `string` is user id
// `User[]` is the response data type that `createRequest` resolves
// `User` is the data type that `createResponse` returns
const mergedRequest = createMergedRequest<string, User[], User>({
  thresholdMs: 0, // time threshold to merged request into one request
  createRequest(ids) {
    return fetchUsers(ids) // `fetchUsers` type: (ids: string[]) => Promise<User[]>
  },
  createResponse(id, users) {
    return users.find((user) => user.id === id)! // return type: User
  }
})

// `fetchUsers` will be called only once
mergedRequest(userId1).then((user) => console.log(user))
mergedRequest(userId2).then((user) => console.log(user))
mergedRequest(userId3).then((user) => console.log(user))

About

Merge scattered requests into one, distribute corresponding result to requestor.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published