我有一个函数,该函数将查询发送到ipcMain,然后等待SQL查询运行。当响应返回时,我遍历返回的数据并将其显示在屏幕上,以供用户查看。
由于某种原因,无论何时返回数据,我都会在渲染过程中记录该数据,然后按字母顺序对其进行排序。我无法确定这种排序发生的位置/原因。
在我看来,基于console.logs,是在ipcMain发送请求与呈现过程接收到正在排序的数据之间的某个时间。
任何见识都会得到赞赏。
我已经登录了所有明显的地方,以查看是否可以诊断订购的来源。
// function that gets the results
// This console.log is alphabetically sorted here
runQuery(config){
window.ipc.send('run-query', config);
return new Promise((resolve, reject) => {
window.ipc.on('run-query-reply', (event, result) => {
console.log(result)
resolve(result);
});
});
}
// calls handler - it is not sorted on this console.log
ipcMain.on('run-query', async (event, arg) => {
var results = await handlers.runQuery(event, arg, scope);
console.log(results)
event.sender.send('run-query-reply', results)
})
// handler function - it is not sorted on this console.log
async function runQuery (){
try {
var connection = await new scope.sql(arg.server.database, arg.server.username, arg.server.password, config);
return await connection.query(query).spread((results) => {
console.log(results)
return results;
})
} catch (error) {
return scope.errorHandler(error.message)
}
}
样本数据:
// Data in ipcMain would like like:
{
"email": "test",
"contact-id":"1",
"first-name":"test",
"allow-email":test"
}
// Data from render window.ipc
{
"allow-email":"test",
"contact-id":"1",
"email": "test",
"first-name":"test"
}
答案 0 :(得分:1)
我相信这很可能是您的控制台在Chrome中登录的产物。
很可能您的ipcMain登录到终端,并保持对象键顺序。
您的渲染器window.ipc登录Chromium开发工具控制台,该控制台将按字母顺序显示对象键。