【问题标题】:Getting data from fulfilled Q promise object in node REPL从节点 REPL 中已完成的 Q 承诺对象获取数据
【发布时间】:2015-07-04 02:04:59
【问题描述】:

考虑这个简单的 Q 承诺对象:

nesh> var p = functionThatReturnsPromise();

如果我去的话,REPL 可以输出 promise 的状态和值:

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

假设我确实在等待promise实现,我无法直接通过p.valuep.state获取值或状态。

我可以这样做:

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

但流畅的 REPL 工作流程让人感觉笨拙和不舒服。

有什么想法吗?

【问题讨论】:

  • 这不是“笨拙”或“不舒服”,这是承诺的预期行为。 p 仅包含对 promise 的引用,如果您想检查值,则使用 .then 并可以在那里检查值。
  • 我知道预期的行为是什么。同样,我希望在 REPL 中有一个更流畅的工作流程。如果我输入 promise 对象的名称,它会输出一个神奇的对象 { state: ... , value: ... },那么要求访问它并不过分。

标签: node.js promise q node-repl


【解决方案1】:
var p = functionThatReturnsPromise();

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

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

【讨论】:

    【解决方案2】:

    你可以试试这个:

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

    然后“继续”——当 promise 完成并调用回调时,执行将停止。但是请注意,它似乎冻结了,节点 0.12.4,尽管我认为这是一个节点错误——也许对你有用。

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 2014-03-23
      • 1970-01-01
      • 2017-07-18
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      相关资源
      最近更新 更多