在javascript中查看对象(在引擎盖下)

时间:2016-03-10 09:34:21

标签: javascript node.js oop console q

我非常好奇如何在nodejs中显示对象,在这种情况下是promises。使用console.log(promiseObject)时,输出的类型为

{state:pending}

这对我来说似乎很奇怪,因为在该对象上调用函数.then()所以我希望看到那里。

使用此代码尝试自己

 function a(){

    var deferred = q.defer();

    setTimeout(function(){
        deferred.resolve();
    },4000)

    return deferred.promise;
}

var p1 = a()
console.log(p1) 
//outputs {state:pending} while i was expecting something like
//while i was expecting it to be {state:pending,then:function()}

对我来说非常神秘。我在浏览器中打印对象时也有类似的问题,好像有些字段是......隐藏的? (虽然我知道javascript中没有这样的东西)

2 个答案:

答案 0 :(得分:1)

使用调试器,您的浏览器可能是一个很好的。浏览器中的F12并单击下面的运行按钮,您可以浏览Promise对象(适用于Chrome / Chromium,Edge,Firefox):



console.clear();
var a = new Promise(function(res, rej) { res(); });
console.dir(a);




then()catch()和其他函数位于__proto__属性中。

答案 1 :(得分:0)

var p1 = a()
console.log(p1)

这里p1正在调用一个返回promise的函数。因此,当您控制日志时,您将看到承诺的状态。 但是你希望对象做类似

的事情
function a(){

var deferred = q.defer();

setTimeout(function(){
    var data = {status: 'resolved', value: '3'};
    deferred.resolve(data);
},4000)

return deferred.promise;
}

a().then(function (data) {
  console.log(data); //prints {status: 'resolved', value: '3'}
}

希望它有所帮助