express-sync-request

0.0.2 • Public • Published

express-sync-request

基于Promise的express异步请求队列控制,一般用于控制数据库的删改并发请求

安装

npm install express-verify

使用

以下示例基本囊括了常见的请求控制,您可以直接复制该代码启一个express工程测试

import express from 'express'
import syncRequest from '../libs/express-sync-request'
const router = express.Router()
function promiseFun (res) {
  return new Promise(resolve => setTimeout(() => resolve(res.send('ok')), 1000))
}
// 并发该post请求,每次请求都会在上一次promiseFun执行结束后才会继续处理当前请求
router.post('/', syncRequest(
  // 该参数必须是一个返回Promise的函数
  (req, res) => promiseFun(res)
))

const syncRequestForResources = syncRequest(
  (req, res) => promiseFun(res),
  // 你也可以传入一个同步队列id的getter函数,用于让同步队列区分不同资源
  req => req.params._id
)
// 并发resources资源的post或delete请求,如果请求的是同一份资源(req.params._id相同),那么该请求的处理是串行的
// 假设当前有个delete或post请求A:'/resources/id1'正在进行,又来了一个delete或post请求B:'/resources/id1',又来了一个delete或post请求C:'/resources/id2'。那么请求B只会在请求A结束之后才能处理,请求C会立即处理
router.post('/resources/:_id', syncRequestForResources)
router.delete('/resources/:_id', syncRequestForResources)
export default router

Dependencies (1)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i express-sync-request

    Weekly Downloads

    2

    Version

    0.0.2

    License

    ISC

    Last publish

    Collaborators

    • aweiu