#javascript #node.js #asynchronous
#javascript #node.js #асинхронный
Вопрос:
У меня есть следующее 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 listn' } }
Даже если я упрощу код, возврат будет в том же формате.
function checkCurrentProcesses() {
return new Promise(resolve =>{
resolve({thisIs:"aTest"})
})
}
Promise { { thisIs: 'aTest' } }
Что вызывает такое поведение и как я могу это исправить?
Ответ №1:
Вы почти на месте, вам нужно передать данные в then
обратный вызов как так:
var returned = checkCurrentProcesses()
returned.then((data) => { // can be any name you want
console.log(data) // the object you are expecting
})
Комментарии:
1. Спасибо! вывод теперь отображается правильно как
{ thisIs: 'aTest' }