发送响应后如何在node.js api中运行后台任务?

aaq*_*b90 5 javascript mongodb node.js mean-stack

我有一个要求,我必须在返回 api 响应后运行一分钟的后台进程。该后台进程将对 mongodb 进行一些操作。

我的方法是,我在返回响应后为后台进程发出一个事件。

这个操作有什么最好的方法吗?请帮我。

谢谢,

Khl*_*brg 8

您可以使用 EventEmitter 来触发后台任务。

或者您可以在返回响应之前触发异步任务。

我会实现某种简单的内存队列。在返回响应之前,我会将一个任务添加到队列中,发出一个事件告诉侦听器队列中有任务。

编辑:

我不确定我是否完全理解您的用例。但这可能是一种方法。

如果您没有参考执行 mongo,您可能需要进行一些快速查找或创建,然后返回响应,然后运行任务

const myqueue = []

const eventHandler = new EventEmitter();

eventHandler.on('performBackgroundTask', () => {

  myqueue.forEach(task => {
    // perform task
  })

})

app.get('/api', function (req, res) {

    const identificationForItemInMongo = 123

    myqueue.push(identificationForItemInMongo)

    eventHandler.emit('performBackgroundTask',     identificationForItemInMongo)

   res.send('Send the response')
})
Run Code Online (Sandbox Code Playgroud)


小智 0

当你想对 db 进行异步调用并等待结果时,你需要使用回调或使用 ES6 中的 Promise 或 async/await 。

阅读本文以获取更多信息