从节点REPL中的已满足Q promise对象获取数据

时间:2015-07-03 13:59:08

标签: node.js promise q node-repl

考虑这个简单的Q promise对象:

nesh> var p = functionThatReturnsPromise();

如果我去,REPL非常友好地输出承诺的状态和价值:

nesh> p
{ state: 'fulfilled',
  value: 
   {
     // (data properties)
   }
}

假设我确实等待履行承诺,我无法通过p.valuep.state直接获得价值和状态。

我可以做类似的事情:

nesh> var data
undefined
nesh> p.then(function(_data) { data = _data })

但是,对于流利的REPL工作流程来说,它感到笨拙和不舒服。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

var p = functionThatReturnsPromise();

Promise确实定义了statevalue,但是为了访问它,您需要使用valueOf()函数。

p.valueOf() ==> promise value
p.inspect() ==> { state: 'fulfilled', value: 'data' }

答案 1 :(得分:0)

你可以试试这个:

p.then(function(value){debugger;});

然后“继续” - 当履行承诺并调用回调时,执行将停止。但请注意,它似乎冻结了节点0.12.4,虽然我认为这是一个节点错误 - 也许会对你有用。