在节点shell中我看到了:
> console.log(JSON.stringify(Q.fcall(function() { return 10 })));
{}
undefined
在这里查看q的文档:Q 假设它返回一个promise,它是一个带有apply()和then()函数的对象。
那为什么这会返回一个空对象?
答案 0 :(得分:1)
那为什么这会返回一个空对象?
因为JSON不能表示函数对象,JSON.stringify
将忽略任何函数属性。
相反,请勿直接使用JSON.stringify
- 直接console.log(Q.fcall(function() { return 10 }))
并检查记录的值。顺便说一下,你没有必要使用fcall
和一个常数函数,只需使用Q
function:console.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