Node.JS async, показывающий «Обещание» в возвращаемых данных - PullRequest
2 голосов
/ 21 апреля 2019

У меня есть следующий вызов функции node.js и функция

var returned = checkCurrentProcesses()
    returned.then(() => {
        console.log(returned)

    })

function checkCurrentProcesses() {
    return new Promise(function(resolve, reject){
        exec('pgrep -u user123 -x node  -a', (err, cmdOutput, stderr) => {
            if (err) {
                reject({error:err})
            }
            else{
                resolve({output:cmdOutput})
            }
        });
    })

}

Это успешно перезапускает нужные мне данные, однако возвращает их способом, который я не понимаю. Я ожидаю получить возвращение разрешенного условия, которое является объектом. Но когда я console.log (возвращенный) вывод выглядит следующим образом, и данные являются объектом в объекте, и я не могу получить к нему доступ.

Promise { { output: '26278 node nodeMasterServer.js list\n' } }

Даже если я упросту код, формат возврата тот же.

function checkCurrentProcesses() {
    return new Promise(resolve =>{
        resolve({thisIs:"aTest"})
    })
}

Promise { { thisIs: 'aTest' } }

Что является причиной этого поведения, и как я могу это исправить?

1 Ответ

3 голосов
/ 21 апреля 2019

Вы почти у цели, вам нужно передать данные в обратный вызов then следующим образом:

var returned = checkCurrentProcesses()
    returned.then((data) => { // can be any name you want
        console.log(data) // the object you are expecting

    })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...