Node.JS异步在返回的数据中显示“ Promise”

时间:2019-04-21 04:52:32

标签: javascript node.js asynchronous

我有以下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 个答案:

答案 0 :(得分:3)

您快到了,您需要这样将数据传递到then回调:

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

    })