首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从单个IPC调用获得多个IPC回调

从单个IPC调用获得多个IPC回调
EN

Stack Overflow用户
提问于 2019-04-22 16:27:50
回答 1查看 469关注 0票数 1

Main:

代码语言:javascript
复制
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');
    });
});

呈现:

代码语言:javascript
复制
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次,等待主进程响应后再再次单击,这就是我在控制台上得到的:

代码语言:javascript
复制
sending token!
hi
sending token!
(2x) hi
sending token!
(3x) hi
sending token!
(4x) hi

sending token文本按下按钮登录,hi是主进程返回的文本。它应该只返回一次hi。是什么导致了这一切?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-22 19:10:15

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

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

代码语言:javascript
复制
IPC.on('botCheckLoginReturn', (event: Electron.IpcMessageEvent, response: any) => {
    console.log(response);
    // ...
});

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55797664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档