【问题标题】:Extend bluebird promise resolved value using bluebird .return() method使用 bluebird .return() 方法扩展 bluebird 承诺解析值
【发布时间】:2016-02-09 09:09:47
【问题描述】:

我正在尝试通过使用 bluebird 的 .return() 方法来扩展承诺解析值。

目前我正在使用以下代码:

doSomethingAsync()              // assume resolved value is {a: 0}
    .return({b: 1})
    .then(console.log);         // prints {b: 1}

我想用doSomethingAsync 解析值扩展result 对象({b: 1}),在本例中为{a: 0},所以我可以这样写:

var extend = require('extend');

doSomethingAsync()                          // assume resolved value is {a: 0}
    .return(extend(resolvedValue , {b: 1}))
    .then(console.log);                     // should print {a: 0, b: 1}

是否可以从.return() 参数中访问doSomethingAsync() 解析值(在这种情况下为{a: 0})?

【问题讨论】:

  • 现在应该如何使用.return。参考页面提到使用的值.return 应该在调用.return 时绑定。你应该只是一个普通的.then 并让扩展方法返回扩展对象。

标签: node.js promise bluebird


【解决方案1】:

正如我在评论中提到的,这不是.return 的使用方式。只需使用类似这样的东西:

const Promise = require('bluebird');
const _ = require('lodash');

Promise.resolve({a: 1}).then(obj => _.extend(obj, {b: 2})).then(console.log);

打印:{ a: 1, b: 2 }

【讨论】:

    猜你喜欢
    • 2014-02-03
    • 2016-07-27
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 2014-07-05
    • 2015-11-25
    相关资源
    最近更新 更多