2016-02-09 40 views
1

我试图通过使用蓝鸟的.return()方法来扩展承诺解决的值。使用蓝鸟.return()方法扩展蓝鸟承诺解析值

目前我使用下面的代码:

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

我想延长result对象({B:1})与doSomethingAsync解析值,在这种情况下{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} 

是否有可能访问doSomethingAsync()解析值(在这种情况下{a: 0})从.return()参数范围内?

+1

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

回答

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 }