2016-02-09 44 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 }