Я хочу переписать эту функцию, чтобы разрешить обещание, а не вызывать функцию обратного вызова в попытке лучше понять работу с обещаниями.
export const connect = (callback: CallableFunction|void): void => {
LOG.debug("Connecting to DB at %s", URI);
connectToMongoDb(URI, opts)
.then((result) => {
LOG.debug("Connection established");
connection = result;
if (callback) {
callback();
}
})
.catch((err) => {
LOG.error("Could not establish connection to %s, retrying...", URI);
LOG.error(err);
setTimeout(() => connect(callback), 5000);
});
};
Однако, похоже, я не могу. Я уже попробовал наивный подход:
export const connect = (): Promise<void> => new Promise((resolve): void => {
// ...´
.then((result) => {
LOG.debug("Connection established");
connection = result;
resolve();
})
// ...
});
Но это не решает проблему при установлении соединения.
Что я делаю не так? Как я могу переписать это, чтобы правильно использовать и разрешить Обещание вместо использования функции обратного вызова?