node的q.fcall返回一个空对象

时间:2014-05-27 22:57:46

标签: javascript json node.js promise q

在节点shell中我看到了:

> console.log(JSON.stringify(Q.fcall(function() { return 10 })));
{}
undefined

在这里查看q的文档:Q 假设它返回一个promise,它是一个带有apply()和then()函数的对象。

那为什么这会返回一个空对象?

2 个答案:

答案 0 :(得分:1)

  

那为什么这会返回一个空对象?

因为JSON不能表示函数对象,JSON.stringify将忽略任何函数属性。

相反,请勿直接使用JSON.stringify - 直接console.log(Q.fcall(function() { return 10 }))并检查记录的值。顺便说一下,你没有必要使用fcall和一个常数函数,只需使用Q functionconsole.log(Q(10))

答案 1 :(得分:0)

它可能基于JSON.stringify函数的时间。例如:

> console.log(JSON.stringify(Q.fcall(function() { return 10; })));
'{}'
> var p = Q.fcall(function() { return 10; });
> console.log(JSON.stringify(p));
'{"source":{}}'

并将其作为承诺:

> p.then(function(value) { console.log(value); });
10