У меня есть две функции.Тот, который делает вызов ipcmain, и тот, который является родительским для этой функции.Вызов ipcmain получает некоторые данные из базы данных и возвращает их.Идея состоит в том, чтобы эти вызовы были организованы внутри службы.
Моя проблема в том, что что-то не правильно запускается, и я не уверен, где моя проблема.
Если я утешаю результат регистрации, онправильно регистрирует, однако, сначала регистрирует журнал от родительских вызовов и регистрирует объект EventEmitter.
Как я могу заставить их запускаться по порядку, и результаты вызова ipcmain доступны вне этой функции?
Я уже пытался присвоить результаты переменной в верхней части функции, а затем вернуть, что после вызова результаты точно такие же.
Я также пытался преобразовать обе функции в асинхронныежду безрезультатно.
Я догадываюсь, что функция "backend" ipcmain.on () не отправляет обещание и, следовательно, родительский журнал происходит до того, как значение будет установлено.
// Parent Function
async getDbs (event){
var databaseName = event.target.parentNode.innerText;
this.selectedServer = this.LocalStorage.getItem(databaseName);
this.databaseArray = await this.BackendService.getDbs(this.selectedServer)
console.log(await this.databaseArray)
}
// Call to IPC Main
getDbs(config) {
window.ipc.send('auth-getdbs', config);
return window.ipc.on('auth-getdbs-reply', async (event, result) => {
// Correctly logs an array of databases
console.log(result);
// returns the EventEmitter object
return result;
});
}
// IPC Main Function
ipcMain.on('auth-getdbs', async (event, arg) => {
var results = await handlers.getDbs(event, arg, scope);
event.sender.send('auth-getdbs-reply', results);
})
Ожидаемые результаты: оба журнала консоли выводят массив имен баз данных
Фактические результаты: журналы консоли родительской функцииEventEmitter и консольный журнал из вызова ipcmain регистрируют массив баз данных.