Skip to content

lazy() function

Home > @rimitive/core > lazy

Mark a module with async create() as lazy.

Lazy modules are awaited during composition. When compose() includes lazy modules, it returns a Promise that resolves after all async modules are initialized.

Signature:

export declare function lazy<TName extends string, TImpl, TDeps>(module: Module<TName, Promise<TImpl>, TDeps>): LazyModule<TName, TImpl, TDeps>;

Parameter

Type

Description

module

Module<TName, Promise<TImpl>, TDeps>

Returns:

LazyModule<TName, TImpl, TDeps>

const DbModule = defineModule({
name: 'db',
create: async () => {
const pool = await createPool();
await pool.connect();
return pool;
},
});
// Must wrap async modules with lazy()
const svc = await compose(lazy(DbModule), CacheModule);
// After await, db is fully resolved - sync access
svc.db.query('SELECT 1');