在 bootstrap 运行ning 之后,组件(服务)的 运行 方法的最佳方法是什么?
What's the best way to run method of Component (Service) just after bootstrap running?
我正在使用 NestJS 实例作为微服务(没有 HTTP)。
我需要 运行 组件的方法,它是在 bootstrap 初始化之后带有一些业务逻辑的无限循环。
最好的方法是什么?
src/main.ts
import {NestFactory} from '@nestjs/core';
import {ApplicationModule} from './app.module';
import {Transport} from '@nestjs/microservices';
async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
app.connectMicroservice({
transport: Transport.REDIS,
url: 'redis://:redis_pass@localhost:6379',
});
await app.startAllMicroservicesAsync();
// Probably here I must run startLoop method from app.service.ts
}
bootstrap();
src/app.service.ts
import { Component } from '@nestjs/common';
@Component()
export class AppService {
startLoop() {
let timerId = setTimeout(function loop() {
console.log('Loop process');
// Some business logic here
timerId = setTimeout(loop, 1000);
}, 1000);
}
}
我会说你应该实现 OnModuleInit
接口。 Read more about lifecycle hooks.
我正在使用 NestJS 实例作为微服务(没有 HTTP)。
我需要 运行 组件的方法,它是在 bootstrap 初始化之后带有一些业务逻辑的无限循环。
最好的方法是什么?
src/main.ts
import {NestFactory} from '@nestjs/core';
import {ApplicationModule} from './app.module';
import {Transport} from '@nestjs/microservices';
async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
app.connectMicroservice({
transport: Transport.REDIS,
url: 'redis://:redis_pass@localhost:6379',
});
await app.startAllMicroservicesAsync();
// Probably here I must run startLoop method from app.service.ts
}
bootstrap();
src/app.service.ts
import { Component } from '@nestjs/common';
@Component()
export class AppService {
startLoop() {
let timerId = setTimeout(function loop() {
console.log('Loop process');
// Some business logic here
timerId = setTimeout(loop, 1000);
}, 1000);
}
}
我会说你应该实现 OnModuleInit
接口。 Read more about lifecycle hooks.