gpt4 book ai didi

javascript - Electron webContents.send 并不总是有效

转载 作者:行者123 更新时间:2023-12-03 12:20:25 24 4
gpt4 key购买 nike

我使用以下命令将一些数据发送到另一个窗口;

try{ 
win.webContents.once('dom-ready', () => win.webContents.send('send-data', data));
}
catch(err){
console.log("Caught ",err);
}

并用于接收;

ipcRenderer.on('send-data', function (event,data) {     
console.log("Loaded ", data);
});

问题是,这里的“数据”有时组装得非常快并且工作正常。但是,有时需要一段时间,此时另一个窗口已经加载。在这种情况下没有收到数据,也没有错误消息。但是我可以简单地使用以下发送它而不会出现问题;

win.webContents.send('send-data', data)

我找不到同时申请这两种情况的方法。有什么建议吗?

最佳答案

简短的回答是否定的。

Electron 没有等待窗口加载的功能,然后发送消息,或者如果窗口已经加载则立即发送消息。

但是这可以用一些简单的代码来完成:

var hasWindowLoaded = false;
var hasDataBeenSent = false;
var data = {};

win.webContents.once('dom-ready', () => {
hasWindowLoaded = true;
if (!hasDataBeenSent && data) {
win.webContents.send('send-data', data);
hasDataBeenSent = true;
}
});

// Now add this where you build the `data` variable.
function loadData () {
data = {'sampleData': 'xyz'};

if (!hasDataBeenSent && hasWindowLoaded) {
win.webContents.send('send-data', data);
hasDataBeenSent = true;
}
}

一旦数据加载到 loadData 中,它将检查窗口是否已完成加载,如果已完成,则立即发送数据。

否则它将数据存储在一个变量 (data) 中,一旦窗口加载它就将它发送到窗口。

关于javascript - Electron webContents.send 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66360223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com