РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpCpAP 8 of 201 menu
◀ ▶

Асинхронный провайдер в Nest

Значение иногда готовят не сразу: ждут сеть, файл или таймер. Контроллер не должен знать об этом ожидании в методе страницы.

useFactory может быть асинхронной: она возвращает обещание, Nest дождётся его при старте приложения. В метод страницы уже приходит готовая строка, без await в обработчике адреса.

Покажем на примере постов. Запишем асинхронную фабрику в провайдеры модуля:

import { Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; @Module({ controllers: [PostController], providers: [ { provide: 'POSTS', useFactory: async () => { await new Promise((resolve) => { setTimeout(resolve, 10); }); return 'Posts ready'; }, }, ], }) export class AppModule {}

Контроллер получит готовую строку и сразу отдаст её:

import { Controller, Get, Inject } from '@nestjs/common'; @Controller('posts') export class PostController { label: string; constructor(@Inject('POSTS') label: string) { this.label = label; } @Get() getPosts(): string { return this.label; } }

Зарегистрируйте асинхронную фабрику подписи списка работников и отдайте готовое значение из WorkerController без ожидания в методе страницы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить