मैं अपने NestJs एप्लिकेशन के लिए एक निर्धारित कार्य बनाना चाहता हूं। इसे हर X सेकंड में निष्पादित करना चाहिए, इसलिए मैं यहां बताए गए अंतराल का उपयोग करता हूं।

एप्लिकेशन कॉन्फ़िगरेशन फ़ाइलों का उपयोग करता है ताकि मैं अंतराल को कॉन्फ़िगर करने योग्य रख सकूं। लेकिन मैं टाइपस्क्रिप्ट डेकोरेटर के लिए एक चर में कैसे पास करूं?

NestJs एक उपलब्ध करा रहा है अनुसूचित कार्यों के लिए नमूना भंडार

तो नमूने के आधार पर मैं कुछ ऐसा करना चाहता हूं

@Injectable()
export class TasksService {
  constructor(
    private readonly myConfigService: MyConfigService,
  ) {}

  @Interval(this.myConfigService.intervalInMilliseconds)
  handleInterval() {
    // ...
  }
}

क्या मुझे दस्तावेज़ों में नीचे वर्णित SchedulerRegistry का उपयोग करना होगा? ऐसा लगता है कि मानक टाइपस्क्रिप्ट के साथ यह संभव नहीं है, देखें यह धागा.

0
Question3r 11 जिंदा 2020, 23:08

1 उत्तर

सबसे बढ़िया उत्तर

घोषणात्मक एपीआई (एनोटेशन) के साथ यह संभव नहीं है, आपको क्रॉन जॉब को गतिशील रूप से पंजीकृत करना होगा (देखें दस्तावेज़):

@Injectable()
export class TasksService implements OnModuleInit {
  constructor(
    private readonly myConfigService: MyConfigService,
    private readonly schedulerRegistry: SchedulerRegistry,
  ) {}

  onModuleInit() {
    const interval = setInterval(() => this.handleInterval, this.myConfigService.intervalInMs);
    this.scheduler.addInterval('my-dynamic-interval', interval);
  }

  handleInterval() {
    // ...
  }
}
2
Kim Kern 11 जिंदा 2020, 20:32