Я изучаю nodejs и электрон, и я пытаюсь получить данные от моего рендерера, обработать эти данные и отправить их обратно.Но моя функция обработки слишком медленная, или я на самом деле не знаю, и поэтому ipc отправляет данные слишком рано и создает неопределенные данные.Короче говоря, я хочу, чтобы моя функция обработки завершилась до того, как событие ipcMain отправит сообщение обратно.Вот лишь пример того, где я застрял, хотя это не мой настоящий код, я могу послать вам настоящий, но он действительно грязный, как много ..
// In main process.
const {ipcMain} = require('electron')
function treatData (input) {
var treated = treat(input)
// ...
console.log(treated) // prints the actual treated data
return treated;
}
ipcMain.on('asynchronous-message', (event, rawdata) => {
console.log(rawdata) // prints my raw data
var dataTreated = treatData(rawdata)
console.log(dataTreated) // prints Undefined
event.sender.send('asynchronous-reply', dataTreated) // send Undefined data
})
Поскольку я учусь чему-то новому каждый деньЯ часто привязываюсь к базовым вещам, я думаю ... Но вот я и мне нужна твоя помощь.Я уже искал проблему, подобную моей, но ничего не могу найти, потому что не знаю, как на самом деле называется эта проблема.Я искал асинхронную функцию с async и await, но я не знаю, насколько это возможно, я могу разместить их здесь.Потому что async не работает с ipcMain, или я не знаю, что мне не хватает, но это не работает:
async function RenderMessage () {
ipcMain.on('asynchronous-message', (event, rawdata) => {
console.log(rawdata) // prints my raw data
var dataTreated = await treatData(rawdata)
console.log(dataTreated) // prints Undefined
event.sender.send('asynchronous-reply', dataTreated) // send Undefined data
})
}
Возвращает «ожидание зарезервированное слово»
Заранее спасибо!