首页 > 解决方案 > Node js中的异步函数不会调用应该在执行后调用的函数

问题描述

我正在做一个需要使用电子 js 的项目(我是 javascript 新手)。当我尝试使用该electron.remote.dialog.showOpenDialog函数时,它不会调用应该在异步函数执行后执行的函数(console.log)。Sync 方法成功,而 Async 方法不成功。如果有人可以帮助,请帮助我。这是代码。

异步方法(不成功)

const { dialog } = require("electron").remote;

dirButton = document.getElementById('select-file')

function getDir(e) {
  dialog.showOpenDialog(
    { properties: ["openDirectory", "openFile"] },
    console.log
  );
}
dirButton.addEventListener("click",  getDir);

同步方法(成功)

const { dialog } = require("electron").remote;

dirButton = document.getElementById('select-file')

function getDir(e) {
  dirr = dialog.showOpenDialogSync(
    { properties: ["openDirectory", "openFile"] },
  );
  console.log(dirr)
}
dirButton.addEventListener("click",  getDir);

标签: javascriptnode.jselectron

解决方案


你需要在异步调用中做这样的事情,因为它返回承诺。

function getDir(e) {
  dialog.showOpenDialog({ properties: ["openDirectory", "openFile"] }).
  then(result => {
      console.log(result)
   }).catch(err => {
      console.log(err)
   })
  }

推荐阅读