单击将数据保存到文件并关闭窗口

时间:2019-07-22 20:50:17

标签: javascript node.js electron

我有一些数据需要保存到文件中。在按钮上单击我需要保存它,然后关闭窗口。但是,当我调用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) 输出:关闭窗口并创建空白文件,没有数据

2 个答案:

答案 0 :(得分:1)

对于保存功能,您应该返回promisecallback,或使用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();
}

答案 1 :(得分:0)

尝试使用回调:

function saveData(callback) {
// Write code for save your data here
  callback();
}
function closeWin(callback) {
  callback();
 }

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

});