Почему мой Promise возвращает undefined в main.js из экспорта модуля? - PullRequest
1 голос
/ 23 апреля 2019

Попытка научиться работать с 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
        })
    }
}

После поиска и чтения нескольких вопросов и ответов I 'Мы также пытались:

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)
))

Исследовательские ссылки из моих запросов:

Как я могу отправить объект в файл, обработать этот объект, вернуть и получить результат, потому что я что-то здесь упускаю, и я не понимаю, почему я получаю неопределенное значение, и мое Обещание продолжается.

...