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



我非常好奇对象如何在nodejs中显示,在这种情况下是promise。使用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中没有这样的事情)

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

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

then()catch()和其他函数都在__proto__属性中。

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

在这里,p1调用一个返回承诺的函数。 因此,当您控制台记录该承诺时,您将看到承诺的状态。但是您希望对象执行类似操作

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'}
}

希望它有帮助

相关内容

  • 没有找到相关文章

最新更新