查看 javascript 中的对象(幕后)
Viewing objects in javascript ( under the hood )
我很好奇对象是如何在 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 中没有这样的东西)
var p1 = a()
console.log(p1)
此处 p1
正在调用一个 returns 承诺的函数。因此,当您控制台记录该承诺时,您将看到承诺的状态。
但是你想让对象做类似
的事情
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'}
}
希望对您有所帮助
使用调试器,您的浏览器可能有一个不错的调试器。在浏览器中按 F12 并单击下面的 运行 按钮,您可以浏览 Promise 对象(适用于 Chrome/Chromium、Edge、Firefox):
console.clear();
var a = new Promise(function(res, rej) { res(); });
console.dir(a);
then()
,catch()
等函数在__proto__
属性.
我很好奇对象是如何在 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 中没有这样的东西)
var p1 = a()
console.log(p1)
此处 p1
正在调用一个 returns 承诺的函数。因此,当您控制台记录该承诺时,您将看到承诺的状态。
但是你想让对象做类似
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'}
}
希望对您有所帮助
使用调试器,您的浏览器可能有一个不错的调试器。在浏览器中按 F12 并单击下面的 运行 按钮,您可以浏览 Promise 对象(适用于 Chrome/Chromium、Edge、Firefox):
console.clear();
var a = new Promise(function(res, rej) { res(); });
console.dir(a);
then()
,catch()
等函数在__proto__
属性.