gpt4 book ai didi

typescript - 从单个IPC调用获取多个IPC回调

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

主要的:

ipcMain.on('botCheckLogin', (event: Electron.IpcMessageEvent, token: string) => {
axios.post('https://www.google.com/recaptcha/api/siteverify' +
'?secret=serverSecret=' + token)
.then(function(response) {
console.log(response);
event.sender.send('botCheckLoginReturn', 'hi');
})
.catch(function(error) {
console.log(error);
event.sender.send('botCheckLoginReturn', 'world');
});
});

使成为:

submitForm() {
if ((this.$refs.form as LoginForm).validate()) {
this.$recaptcha('login').then((token) => {
console.log('sending token!');
IPC.send('botCheckLogin', token);
});

IPC.on('botCheckLoginReturn', (event: Electron.IpcMessageEvent, response: any) => {
console.log(response);
return;
const loginPacket: LoginPacket = {
userName: (this as LoginForm).userName,
displayName: (this as LoginForm).displayName,
password: (this as LoginForm).loginPassword,
email: (this as LoginForm).email,
};
if (!(this as LoginVar).isRegister) {
IPC.send('login', loginPacket);
} else {
IPC.send('register', loginPacket);
}
});
}
}

通过按钮调用 submitForm函数。我单击了该按钮4次,等待MAIN进程做出响应,然后再次单击,这就是我在控制台上看到的内容:
sending token!
hi
sending token!
(2x) hi
sending token!
(3x) hi
sending token!
(4x) hi

按下按钮时会记录 sending token文本,而 hi是MAIN流程返回的文本。它应该只返回一次 hi。是什么原因造成的?

最佳答案

每次您单击按钮时,都将为botCheckLoginReturn附加一个新的事件处理程序。每次您单击按钮时,事件处理程序的此列表都会扩展。然后,将在事件发生时调用此不断增加的事件处理程序列表。

确保仅“一次”执行以下操作:

IPC.on('botCheckLoginReturn', (event: Electron.IpcMessageEvent, response: any) => {
console.log(response);
// ...
});

这意味着,将其从按下按钮时调用的代码中移出。

关于typescript - 从单个IPC调用获取多个IPC回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55797664/

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