JS-异步/等待

时间:2018-10-25 08:09:15

标签: javascript async-await electron

我正在使用异步功能,但是它不能按照我想要的方式工作。 即使它是异步的,它也会冻结我的UI。

在我的控制台中,我有该日志:

  1. DoSi断开连接后开始
  2. f的开始
  3. -然后冻结直到我的诺言得到解决-
  4. DLL调用
  5. END WhildeDosiDeconnected
  6. f结束
  7. 然后是f

我期望以下行为:

  1. Dosi断开连接后开始
  2. f的开始
  3. -不冻结我的UI,而是开始工作-
  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,但我不认为这与之相关

0 个答案:

没有答案