[Nestjs] 集成定时器以及使用方法

简介: 在后台开发中,我们经常遇到定时的需求,比如每天早上八点推送日志,推送待办,推送天气预报等。接下来简单介绍Nestjs集成定时器的简单使用方法!

在后台开发中,我们经常遇到定时的需求,比如每天早上八点推送日志,推送待办,推送天气预报等。接下来简单介绍Nestjs集成定时器的简单使用方法!


在 NestJS 中集成定时器可以使用 @nestjs/schedule 模块,它提供了一种简单而强大的方式来执行定时任务。下面是集成定时器的步骤:


安装 @nestjs/schedule 模块:使用 npm 或者 yarn 安装 @nestjs/schedule 模块。

npm install --save @nestjs/schedule

配置模块:在你的 NestJS 应用的根模块(通常是 app.module.ts)中导入 ScheduleModule 并添加到 imports 数组中。

import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
  imports: [ScheduleModule.forRoot()],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}


创建定时任务:在任何一个可注入类(比如服务)中创建定时任务。首先,使用 @Injectable() 装饰器将该类标记为可注入。然后,使用 @Cron() 装饰器来指定定时任务的执行时间。可以使用 Cron 表达式或者预定义的字符串(如 '0 * * * *' 表示每小时的整点)。

import { Injectable } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
@Injectable()
export class MyTaskService {
  @Cron('0 * * * *') // 每小时的整点执行
  handleCron() {
    console.log('定时任务每小时执行一次');
  }
}

使用定时任务:在需要使用定时任务的地方,比如控制器或者其他服务中,将定时任务的类注入进来,并调用其方法。

import { Controller, Get } from '@nestjs/common';
import { MyTaskService } from './my-task.service';
@Controller('cats')
export class CatsController {
  constructor(private readonly myTaskService: MyTaskService) {}
  @Get()
  findAll(): string {
    this.myTaskService.handleCron(); // 执行定时任务方法
    return 'This action returns all cats';
  }
}


这时我们启动服务,定时器就会正常触发了!


更多跟定时器相关的API请查阅官方文档

相关文章
|
JSON 小程序 算法
uniapp小程序封装常用工具函数
类似的工具函数还有很多,这里暂时不一一列举了,上面提到的银行卡校验,还可以使用阿里公开的一个校验接口cardNo=银行卡号码&cardBinCheck=true这个接口会返回对应的银行简称银行卡类型,如果想要显示对应的银行logo的话,可以联系我,由于JSON数据太大,没办法全部放在这里。
201 0
|
1月前
|
前端开发
自定义 Hook 编写指南
【10月更文挑战第15天】本文介绍了 React 中的 Hooks 和自定义 Hook 的基本概念、编写方法及常见问题。通过具体代码示例,详细讲解了如何在函数组件中使用状态和其他 React 特性,并分享了避免常见错误的技巧。自定义 Hook 可以帮助你将组件中的逻辑提取出来,使其更加可重用和可维护。
152 68
|
2月前
Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter
这篇文章介绍了在Nest.js构建应用时,如何通过事件/发布-订阅模式使应用程序更健壮、灵活、易于扩展,并简化服务间通信。文章主要围绕@nestjs/event-emitter模块展开,这是一个基于eventemitter2库的社区模块,提供了事件发布/订阅功能,使得实现事件驱动架构变得简单。文章还介绍了如何使用该模块,包括安装依赖、初始化模块、注册EventEmitterModule、使用装饰器简化监听等。最后总结,集成@nestjs/event-emitter模块可以提升应用程序的事件驱动能力,构建出更为松耦合、易扩展且高度灵活的系统架构,是构建现代、响应迅速且具有高度解耦特性的Nest.
|
前端开发
使用concurrently模块-同时启动react项目和mock模拟接口
使用concurrently模块-同时启动react项目和mock模拟接口
86 0
|
6月前
|
XML 移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable定时捕获事件代码升级修改
ruoyi-nbcio-plus基于vue3的flowable定时捕获事件代码升级修改
130 0
|
前端开发 JavaScript
dva的简单使用流程
dva的简单使用流程
89 0
|
6月前
|
Web App开发 JavaScript 前端开发
Express 框架的特点、使用方法以及相关的常用功能和中间件
Express 框架的特点、使用方法以及相关的常用功能和中间件
346 1
|
6月前
|
关系型数据库 MySQL API
如何使用hook?
如何使用hook?
50 0
|
JavaScript 前端开发 API
🎖️怎么使用 Express 创建一个简单的API服务
在这篇文章中,我们将一起使用 Express.js 来构建一个简单的 API。这个 API 可以作为构建更复杂项目的起点。
207 0
React+Hook+ts+antDesign实现伪定时调用接口功能
React+Hook+ts+antDesign实现伪定时调用接口功能
73 0