javascript - 单击按钮将数据保存到文件并关闭窗口
问题描述
我有一些数据需要保存到文件中。在一个按钮上单击我需要保存它,然后关闭窗口。但是,当我调用 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)输出:窗口关闭并创建了没有数据的空白文件
解决方案
对于保存功能,您应该返回一个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();
}
推荐阅读
- python - Python 实例未创建
- sql - 如何在 Oracle Data Integrator 12c 中为 group by 字段创建字符串
- powershell - 尝试使用 powershell 打开 oracle 服务器的连接
- xml - 如何在 'XREF' 元素中包装 'styled-content' 值
- c - 确定 N 是否为素数(如果 N 为 [2 <= N <= 2^63-1])的最佳算法是什么?
- google-chrome - 谷歌分析目标没有跟踪所有订单
- javascript - 我需要帮助在 Discord.JS 中创建警告命令
- java - 为什么我们需要在Hashtable/ConcurrentHashMap的put方法中加锁?
- jenkins - Jenkins 插件使用来自另一个插件的类,而不是 Maven 依赖项
- r - 在R中的循环内过滤多列数据框