Appearance
Pipeline
ts
import { Pipeline } from "@dpg.gg/core/utils";Overview
Pipeline представляет собой основу для реализации middleware системы.
На его основе реализует система middleware для Renderer
ts
const ms = new Pipeline();
ms.use((ctx, next) => {
// some logic
return next();
});
await ms.run(ctx);
// Or
const res = await(new Pipeline()).use(fn1).use(fn2).run(ctx);Либо можно использовать Pipeline как родительский класс
ts
class Traverse extends Pipeline<any> {
// ...
async build(node: any): Promise<ComponentChildren> {
// ...
await this.run(node);
// ...
}
}Methods
use(...middlewares)
- Arg:
middlewares: Middleware | Middleware[]- одна или несколько Middleware подобных функций
Добавляет middleware в стек pipeline
ts
ms.use((ctx, next) => {
// some logic
return next();
});async run(context)
- Arg
context: any
Выполнение стека middleware функций для работы с контекстом
ts
await this.run(ctx);Middleware
Это тип callback функции передаваемой в метод use.
Функция получает 2 аргумента:
context
- Type:
any
Контекст который был передан при запуске Pipeline методом run и возможно модифицирован предыдущими middleware функциями
next
- Type:
() => Promise<void> | void
Это функция котораязавершает выполнение текущей middleware функции.
ts
const ms = new Pipeline();
ms.use((ctx, next) => {
// some logic
return next();
});
await ms.run(ctx);WARNING
Если next не будет вызываться, то последующие middlewares из стака не выполнятся