Функция Asyn c в Node js не вызывает функцию, которая должна быть вызвана после ее выполнения - PullRequest
0 голосов
/ 23 марта 2020

Я работаю над проектом, в котором мне нужно использовать электрон js (я новичок в javascript). Когда я пытался использовать функцию electron.remote.dialog.showOpenDialog, она не вызывает функцию, которая должна выполняться после выполнения асин c функций (console.log). Метод Syn c был успешным, а Asyn c - нет. Если кто-то может помочь, пожалуйста, помогите мне. Вот код.

метод Asyn c (безуспешно)

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

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

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

метод Syn c (успешно)

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);

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Ваш метод Asyn c должен быть таким

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

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

const getDir = async (e) => {
    const dirr = await dialog.showOpenDialog({ properties: ["openDirectory", "openFile"] });
    console.log(dirr);
}

dirButton.addEventListener("click",  getDir);
0 голосов
/ 23 марта 2020

Вам нужно сделать что-то подобное в Asyn c call, потому что он возвращает обещание.

function getDir(e) {
  dialog.showOpenDialog({ properties: ["openDirectory", "openFile"] }).
  then(result => {
      console.log(result)
   }).catch(err => {
      console.log(err)
   })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...