在NestJS控制器方法响应完成后延迟异步方法

在NestJS控制器方法响应完成后延迟异步方法

我在控制器中有一个@Get()方法。我得到了响应,但是在响应成功之后,我想在延迟几毫秒后调用异步方法。

我使用的是中间件,但响应似乎在异步方法中指定的时间内挂起。

如何及时解决响应问题,在延迟之后从自定义服务调用自定义方法?

下面是使用的示例代码:

代码语言:javascript复制@Controller()

export class CustomController {

@Get("custom-controller-route")

getCustomValue(@Res() response: Response) {

return response.status(200).send({

value: 1

})

}

}中间件代码如下:

代码语言:javascript复制@Injectable()

export class CustomMiddleware implements NestMiddleware {

constructor(private readonly customService: CustomService) {}

use(req: any, res: any, next: () => void) {

let send = res.send

res.send = async (customResponse: CustomResponse) => {

const { value } = customResponse

await customService.customMethod(value, 5000) // Delay of 5 seconds

res.send = send

return res.send(exchangeRateResponse)

}

next()

}

}CustomService有下一个代码:

代码语言:javascript复制@Injectable()

export class CustomService {

async customMethod(value: any, delay) {

await firstValueFrom(

timer(delay).pipe(

tap(() => {

// Here is the logic that needs to be run in the delay time after the response is finished

console.log(`Custom Service - custom method called with: ${value} after: ${delay} milliseconds.`)

})

)

)

}

}

相关推荐

情歌大全100首流行歌曲 2023年最火的情歌
365体育比分

情歌大全100首流行歌曲 2023年最火的情歌

📅 08-26 👁️ 6385
譽的解释
365bet日博

譽的解释

📅 10-04 👁️ 2357
守望先锋高帧率画面设置方案|高画质流畅设置推荐