2015-06-11 4 views
0

Я хочу построить цепочку обещаний, как показано ниже. Стрелки представляют зависимость: B нуждается в выходе A; C требует выходов как A, так и B.Как построить цепочку обещаний, включающую множественную зависимость?

Поскольку это не просто цепь, но и сеть, я не знаю, как это сделать элегантным способом. Моя идея состоит в том, чтобы выход B содержал выход A и передавал все это вместе с C по краю (B, C). Я предполагаю, что это, вероятно, не самый лучший способ сделать это, потому что должен быть какой-то метод, передавая результат непосредственно в С.

AngularJS promise chain

+2

Я не вижу причин ни для чего другого, кроме линейной цепочки – Phil

+0

Этот вопрос действительно о обещаниях и может быть реализован в любых рамках; это не Angular.js специфично. – Claies

ответ

3

Если вы действительно хотите, чтобы обеспечить C с независимыми результатами обещают, попробуйте что-то вроде этого

var promises = { a: A() }; 
promises.b = promises.a.then(function(a) { 
    return B(a); 
}); 

Promise.all(promises).then(function(results) { 
    C(results.a, results.b); 
}); 

в противном случае, я не вижу никаких проблем с

A().then(function(a) { 
    B(a).then(function(b) { 
     C(a, b); 
    }); 
}); 

но на самом деле, это всего лишь два способа написания такой же тонкий г.

+1

Я думаю, что второй из них гораздо более объяснительный. – adt

+0

'$ q' ->' Promise'. –

+0

@FelixKling OP первоначально помечен как угловой. – Phil

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