Use injected() function with AsyncFactory?
JSchaenzle opened this issue · 0 comments
JSchaenzle commented
I have a singleton class that is being injected into other classes using the injected(...)
syntax.
The class is called Exchange
.
I need to add an async initializer to that class. (want to set up a websocket before the class is used)
I'm trying to do so by creating a Factory but I'm running into a roadblock. Can I still used injected()
when using an async Factory?
I have tokens defined as follows:
exchange: token<Exchange>('Exchange'),
exchangeFactory: token<AsyncFactory<Exchange>>('Exchange Factory'),
and container bindings set up like this,
.bind(TOKENS.exchange)
.toInstance(ExchangeAlpaca)
.inSingletonScope();
container
.bind(TOKENS.exchangeFactory)
.toFactory(async () => {
let e = container.get(TOKENS.exchange);
await e.init();
return e;
});
class SomeClass {
constructor(private e: Exchange){}
}
injected(SomeClass, TOKENS.exchangeFactory.optional) // <- this doesn't work
injected(SomeClass, TOKENS.exchange.optional) // <- this works but factory doesn't get used.