电子中如何通过IPC发送复杂物体?

瓦卡特

ipcRenderer.send()用来将一系列对象发送回ipcMain这是我的代码:

const loadData = async () => {
    let promises = [];
    ['stocks', 'crypto', 'vehicles', 'property'].forEach(item => {
        promises.push(getTableData(item))
    })
    let data = {}
    await Promise.allSettled(promises).then(results => {
        for (let i in results) {
            var result = results[i]
            if (result.status === 'fulfilled') {
                console.log(result.value.type)
                // result.value.data will be an array of objects
                console.log(result.value.data)
                data[result.value.type] = result.value.data
            } else {
                console.error(result)
            }
        }
    }).finally(_ => {
        console.log(data)
        ipcRenderer.send('asynchronous-message', data)
    })
}

result.value.data通过打印时console.log,它显示正确的数据(来自SQL查询):

{ stocks: [{id: 1, ticker: "BRK.B", action: "ADD", price: 173.97, shares: 6}, ...], ...}

但是,当在中打印时,它会ipcMain.on('asynchronous-message', ...)为值打印空数组:

{ stocks: [], crypto: [], vehicles: [], property: [] }

如何发送带有复杂对象的IPC消息?它没有正确序列化吗?


供参考,这是我的ipcMain.on('asynchronous-message', ...)代码:

ipcMain.on('asynchronous-message', async (event, data) => {
  console.log(data)
})

另外,这里是getTableData()

const getTableData = (table) => {
    let toReturn = {
        type: `${table}`,
        data: []
    }
    return new Promise((resolve, reject) => {
        try {
            db.run(`PRAGMA table_info('${table}');`, err => {
                if (err) {
                    reject(err)
                } else {
                    db.each(`SELECT * FROM ${table}`, (err, row) => {
                        if (err) {
                            reject(err)
                        } else {
                            toReturn.data.push(row)
                        }
                    })
                    resolve(toReturn)
                }
            })
        } catch (e) {
            reject(e)
        }
    })
}

每行是一个对象,看起来像:

{id: 1, ticker: "AAPL", action: "ADD", price: 100.0,
shares: 10, datetime: "2020-05-14 23:24:50", platform: ""}
瓦卡特

在@Estradiaz的帮助下,我意识到在处理SQL查询之前已解决了诺言。为了解决这个问题,我从使用切换db.each()db.all()这是我的更新getTableData()

const getTableData = (table) => {
    let toReturn = {
        type: `${table}`,
        data: []
    }
    return new Promise((resolve, reject) => {
        try {
            DB.run(`PRAGMA table_info('${table}');`, err => {
                if (err) {
                    console.error(err)
                    reject(err)
                } else {
                    DB.all(`SELECT * FROM ${table}`, (err, rows) => {
                        if (err) {
                            console.error(err)
                            reject(err)
                        } else {
                            toReturn.data = rows
                            resolve(toReturn)
                        }
                    })
                }
            })
        } catch (e) {
            console.error(e)
            reject(e)
        }
    })
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在通过电子邮件表格发送的电子邮件中创建响应链接?

来自分类Dev

如何提取通过C#中的MSMQ从VB6发送的propertybag或复杂对象

来自分类Dev

在Django中通过Amazon SES发送电子邮件时,如何更改显示名称?

来自分类Dev

如何更改Loopback.js中通过User.verify(...)发送的电子邮件验证的文本

来自分类Dev

如何在Django Rest Framework中通过电子邮件发送动态数据

来自分类Dev

如何防止Gmail叠加到通过PHP mail()发送的“对话”电子邮件中?

来自分类Dev

如何在android中压缩文件夹并通过电子邮件发送

来自分类Dev

通过cakePHP发送电子邮件,如何从变量中设置管理员电子邮件地址?

来自分类Dev

通过smtplib发送电子邮件时如何在电子邮件内容中添加href链接

来自分类Dev

如何通过物体传递道具

来自分类Dev

如何使通过PHP发送的电子邮件紧随过去发送的电子邮件?

来自分类Dev

通过ssh发送复杂的命令

来自分类Dev

Rails:如何通过发送者电子邮件和接收者电子邮件以及电子邮件中的退订链接来传递

来自分类Dev

如何通过Spring发送电子邮件

来自分类Dev

如何通过MIMEMultipart发送电子邮件正文

来自分类Dev

如何通过Mailgun发送电子邮件模板?

来自分类Dev

如何使用python通过gmail发送电子邮件?

来自分类Dev

我如何通过joomla发送电子邮件

来自分类Dev

如何使用PHP通过SMTP发送电子邮件

来自分类Dev

如何通过HTML和JavaScript发送电子邮件?

来自分类Dev

如何通过设计在电子邮件中发送附件?

来自分类Dev

如何通过电子邮件发送Excel文件?

来自分类Dev

如何通过电子邮件发送python代码输出?

来自分类Dev

如何通过设计发送确认电子邮件?

来自分类Dev

我如何通过joomla发送电子邮件

来自分类Dev

如何通过HTML页面发送电子邮件

来自分类Dev

如何通过电子邮件发送$ _SESSION变量

来自分类Dev

如何通过PHP向Yahoo发送电子邮件

来自分类Dev

如何使用MFMailComposeViewContoller通过电子邮件发送pdf?

Related 相关文章

  1. 1

    如何在通过电子邮件表格发送的电子邮件中创建响应链接?

  2. 2

    如何提取通过C#中的MSMQ从VB6发送的propertybag或复杂对象

  3. 3

    在Django中通过Amazon SES发送电子邮件时,如何更改显示名称?

  4. 4

    如何更改Loopback.js中通过User.verify(...)发送的电子邮件验证的文本

  5. 5

    如何在Django Rest Framework中通过电子邮件发送动态数据

  6. 6

    如何防止Gmail叠加到通过PHP mail()发送的“对话”电子邮件中?

  7. 7

    如何在android中压缩文件夹并通过电子邮件发送

  8. 8

    通过cakePHP发送电子邮件,如何从变量中设置管理员电子邮件地址?

  9. 9

    通过smtplib发送电子邮件时如何在电子邮件内容中添加href链接

  10. 10

    如何通过物体传递道具

  11. 11

    如何使通过PHP发送的电子邮件紧随过去发送的电子邮件?

  12. 12

    通过ssh发送复杂的命令

  13. 13

    Rails:如何通过发送者电子邮件和接收者电子邮件以及电子邮件中的退订链接来传递

  14. 14

    如何通过Spring发送电子邮件

  15. 15

    如何通过MIMEMultipart发送电子邮件正文

  16. 16

    如何通过Mailgun发送电子邮件模板?

  17. 17

    如何使用python通过gmail发送电子邮件?

  18. 18

    我如何通过joomla发送电子邮件

  19. 19

    如何使用PHP通过SMTP发送电子邮件

  20. 20

    如何通过HTML和JavaScript发送电子邮件?

  21. 21

    如何通过设计在电子邮件中发送附件?

  22. 22

    如何通过电子邮件发送Excel文件?

  23. 23

    如何通过电子邮件发送python代码输出?

  24. 24

    如何通过设计发送确认电子邮件?

  25. 25

    我如何通过joomla发送电子邮件

  26. 26

    如何通过HTML页面发送电子邮件

  27. 27

    如何通过电子邮件发送$ _SESSION变量

  28. 28

    如何通过PHP向Yahoo发送电子邮件

  29. 29

    如何使用MFMailComposeViewContoller通过电子邮件发送pdf?

热门标签

归档