我对JS还是个新手,我正在使用NestJS和mongo开发一个后端API。我有一个基本的CRUD操作。我希望能够创建文档,返回给用户,并运行另一个方法而不影响用户。
@Post()
async create(@Body() body: Dto, @Headers('id') id: string) {
body.id = id;
const item = await this.service.create(body);
return item;
// Now, I want to call another method async to trace history changes
}
4条答案
按热度按时间qzlgjiam1#
有两个选项可以解决此问题
Promise.all
并行执行两个任务。这是推荐的方法。请参阅此处的示例-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allmlmc2os52#
如果你使用TypeORM,一个干净的方法是使用实体监听器或订阅器,这允许你运行代码“afterInsert”:https://github.com/typeorm/typeorm/blob/master/docs/listeners-and-subscribers.md
b4lqfgs43#
您可以添加对另一个异步方法的调用
xkrw2x1b4#
其他人建议调用异步调用而不等待它。虽然这在一定程度上是可行的,但是方法中的同步代码仍然会在你响应调用者之前执行。换句话说,如果你的另一个“跟踪历史变化”的异步方法看起来像这样
直到您的await为止的所有代码(以及可能更多)仍将被执行。
要避免这种情况,可以使用setImmediate函数。