2016-02-09 3 views
1

Я пытаюсь расширить значение разрешенного обещания с помощью метода bluebird .return().Расширение разрешения bluebird с помощью метода bluebird .return()

В настоящее время я использую следующий код:

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

Я хотел бы расширить result объект ({Ь: 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 }

Смежные вопросы