javascript - 为什么我的 Promise 从模块导出中返回 main.js 中的未定义?
问题描述
尝试学习如何使用 Promises 和 Async。我可以将对象发送到模块,但由于某种原因,我undefined
在处理return
. 我已将其缩小为我的模块返回不正确,或者我在 Async 上编码错误。
main.js
ipcMain.on('file-object', (e, res) => {
module.exports.res = res
console.log('Starting main.js')
async function findTest() {
const testResult = await valid.jsonTest()
console.log(testResult)
mainWindow.webContents.send('test-results', testResult)
}
findTest()
})
foobar.js
module.exports = {
jsonTest: function() {
let testPromise = new Promise((resolve) => {
child = exec('/usr/bin/java -jar ' + jarFile + ' ' + res.res.path, function(error, stdout, stderr) {
if (stderr !== "") {
resolve(
resultArray = {
"status": "error",
"response": stderr
}
)
} else {
resolve(stdout)
}
})
})
testPromise.then((successMessage) => {
console.log(JSON.stringify(successMessage))
return successMessage
})
}
}
在搜索和阅读了几个问答之后,我也尝试过:
let foobar = valid.jsonTest()
waitForElement()
function waitForElement() {
if (typeof foobar !== 'undefined') {
console.log('Getting results')
console.log(foobar)
mainWindow.webContents.send('test-results', foobar)
return
}
else {
console.log(foobar)
setTimeout(waitForElement, 1000)
}
}
但我得到一个连续的undefined
,这就是为什么我认为我可能错误地返回了模块。也试过:
let validationMessage = valid.jsonTest()
console.log("Starting main.js")
let resultPromise = () => {
return new Promise((resolve) => {
console.log('entering promise')
resolve()
console.log(`Status results: ${status}`)
})
}
Promise.resolve().then(() => resultPromise(
console.log(validationMessage.status)
))
我的quieres的研究参考资料:
- node.js 调用外部 exe 并等待输出
- Node.js module.exports 的用途是什么,你如何使用它?
- 返回导出模块的最佳方式
- 如何使函数等到使用 node.js 调用回调
- 如何从承诺返回数据
- 使用节点请求将 Cookie Jar 导出为 JSON
- node.js 调用外部 exe 并等待输出
- node.js 解析承诺并返回值
我如何将对象发送到文件,处理该对象,返回并获取结果,因为我在这里遗漏了一些东西,我不明白为什么我得到未定义并且我的承诺继续。
解决方案
推荐阅读
- python - 在python中根据转移矩阵权重选择一个词
- javascript - 如何对反应表中表行末尾的结果求和
- python - 在 Python 中是否有类似 MATLAB 的 vpasolve 的等效求解器
- bash - 如何使 bash -x 在环境功能上工作,而不仅仅是脚本?
- javascript - Javascript:增加结束变量
- matlab - Matlab - ODE 函数 - 集成我自己与 ode45 函数
- css - CSS在页脚中证明内容问题
- python - 二叉树Python - AttributeError:'NoneType'对象没有属性'left'
- html - 如何在 Angular 7 中以表格格式呈现输入字段标签和文本框?
- javascript - 在 Javascript 中使用循环在每次迭代中修改不同的变量