我有一些数据需要保存到文件中。在按钮上单击我需要保存它,然后关闭窗口。但是,当我调用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) 输出:关闭窗口并创建空白文件,没有数据
答案 0 :(得分:1)
对于保存功能,您应该返回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();
}
答案 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();
});
});