Js - Async / await - PullRequest
       31

Js - Async / await

0 голосов
/ 25 октября 2018

Я работаю над асинхронной функцией, но она работает не так, как я хочу.Он замораживает мой пользовательский интерфейс, даже если он будет асинхронным.

В моей консоли у меня есть этот журнал:

  1. Запуск при подключении DosiDeconnected
  2. запуск f
  3. - Затем он останавливается, пока мое обещание не будет решено -
  4. DLL Call
  5. END WhildeDosiDeconnected
  6. конец f
  7. , затем f

Ожидается следующее поведение:

  1. Запуск при подключении DosiDeconnected
  2. запуск f
  3. - Не заморозить мой пользовательский интерфейс, но начать работать --
  4. END WhildeDosiDeconnected
  5. - когда я получу мой ответ
  6. вызов DLL
  7. конец f
  8. затем 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, но яне думаю, что это связано

...