Я работаю над асинхронной функцией, но она работает не так, как я хочу.Он замораживает мой пользовательский интерфейс, даже если он будет асинхронным.
В моей консоли у меня есть этот журнал:
- Запуск при подключении DosiDeconnected
- запуск f
- - Затем он останавливается, пока мое обещание не будет решено -
- DLL Call
- END WhildeDosiDeconnected
- конец f
- , затем f
Ожидается следующее поведение:
- Запуск при подключении DosiDeconnected
- запуск f
- - Не заморозить мой пользовательский интерфейс, но начать работать --
- END WhildeDosiDeconnected
- - когда я получу мой ответ
- вызов DLL
- конец f
- затем f
Вот мой код
var DLL_WhileDosiDeconnected = edge.func({
assemblyFile:'Calculate.dll',
typeName:'Dosimetre.Startup',
methodName:'WhileDosiDeconnected',
sync:false
});
ipcRenderer.on ('WhileDosiDeconnected', (event, message) => {
console.log("Start WhileDosiDeconnected");
function test_dosi_deco(input){
return new Promise(resolve =>{
DLL_WhileDosiDeconnected(input, function (error, result) {
console.log("DLL call");
resolve(result);
});
})
}
async function f(){
console.log("start of f");
const result = await test_dosi_deco("test");
console.log("end of f");
return result;
}
f("test").then((result)=>{
console.log("then of f");
let mainWindow = remote.getGlobal ('mainWindow');
if (mainWindow) mainWindow.webContents.send ('dosimetreDetecte', result);
});
console.log("END WhileDosiDeconnected");
});
Чего мне не хватает?
ПРИМЕЧАНИЕ: я использую Electron 3.0.4 и electronic-edge-js 8.3.8, но яне думаю, что это связано