首页 > 解决方案 > 单击按钮将数据保存到文件并关闭窗口

问题描述

我有一些数据需要保存到文件中。在一个按钮上单击我需要保存它,然后关闭窗口。但是,当我调用 save() 函数和 close() 函数时,窗口将在没有保存任何内容的情况下关闭。

我试过在一个事件上调用两个函数。我尝试创建一个保存数据然后关闭窗口的函数。

const button = document.getElementById('done');
button.addEventListener('click', () => {
  closeWin();
});


function closeWin(){
  saveData();
  const remote = require('electron').remote;
  var window = remote.getCurrentWindow();
  window.close();
}



function saveData(){
  const fs = require('fs');
  fs.writeFile('data.txt', 'Test Data Output', function (err) {
    if (err) throw err;
  });
}

预期:数据保存到文件(在这种情况下为 txt)输出:窗口关闭并创建了没有数据的空白文件

标签: javascriptnode.jselectron

解决方案


对于保存功能,您应该返回一个promise,或callback,或使用writeFileSync(不推荐);

使用承诺:

function saveData() {
  return new Promise((res, rej) => {
    fs.writeFile('data.txt', 'Test Data Output', function (err) {
      if (err) return rej(err);
      res();
    });
  })
}

然后关闭窗口,你也可以async-await在这里使用:

function closeWin() {
  saveData()
  .then(()=>{
    const remote = require('electron').remote;
    var win= remote.getCurrentWindow();
    win.close();
  })
}

异步等待版本:

async function closeWin() {
  await saveData();
  const remote = require('electron').remote;
  var win= remote.getCurrentWindow();
  win.close();
}

推荐阅读