Javascript 将数据保存到文件并单击一个按钮关闭窗口
我有一些数据需要保存到文件中。按一下按钮,我需要保存它,然后关闭窗口。但是,当我调用save()函数和close()函数时,窗口将在没有保存任何内容的情况下关闭 我尝试在一个事件上调用两个函数。我曾尝试创建一个函数,保存数据,然后关闭窗口Javascript 将数据保存到文件并单击一个按钮关闭窗口,javascript,node.js,electron,Javascript,Node.js,Electron,我有一些数据需要保存到文件中。按一下按钮,我需要保存它,然后关闭窗口。但是,当我调用save()函数和close()函数时,窗口将在没有保存任何内容的情况下关闭 我尝试在一个事件上调用两个函数。我曾尝试创建一个函数,保存数据,然后关闭窗口 const-button=document.getElementById('done'); 按钮。addEventListener('单击',()=>{ closeWin(); }); 函数closeWin(){ saveData(); const remot
const-button=document.getElementById('done');
按钮。addEventListener('单击',()=>{
closeWin();
});
函数closeWin(){
saveData();
const remote=require('electron')。remote;
var window=remote.getCurrentWindow();
window.close();
}
函数saveData(){
常数fs=要求('fs');
fs.writeFile('data.txt','testdata Output',函数(err){
如果(错误)抛出错误;
});
}
预期:数据保存到文件(本例中为txt)
输出:窗口关闭,创建的空白文件没有数据对于保存功能,您应该返回一个
承诺
,或者回调
,或者使用writeFileSync
(不推荐)
使用承诺:
function saveData() {
return new Promise((res, rej) => {
fs.writeFile('data.txt', 'Test Data Output', function (err) {
if (err) return rej(err);
res();
});
})
}
然后关闭窗口,您也可以在此处使用async wait
:
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();
}
尝试使用回调:
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();
});
});
保存是(或应该是)aync操作。你也可以添加saveData()函数吗?@WillJenkins补充说,
closeWin(回调)
是不必要的。并且结束块错误,您需要在saveData
中传递函数。您当前的saveData
函数是什么?在问题中编辑它。刚刚添加了我使用atm的完整测试代码。我注意到它将创建文件,但不会添加任何数据。在我认为它没有做任何事情之前,因为已经存在数据。您没有使用基于承诺的saveData
,您的saveData将无法工作,因为它不会返回任何承诺。请使用我的答案中的saveData
,否则请阅读承诺,它将极大地帮助您。刚刚开始工作。感谢异步工作。我确实这么做了,但我以为你想让我上传原始代码。将标记为现在已回答。谢谢,我也很困惑。没问题。