Я использую Q.js и имею ряд функций, которые возвращают обещания, скованные вместе с последующими обратными вызовами, потому что мне нужно их выполнить в порядке as a sequence.Q.all с закодированной последовательностью
var promiseOne = one();
promiseOne.then(two).then(three).done();
У меня также есть некоторые обещания, которые могут произойти в любое время. Мне нужно знать, когда все они будут решены, включая последний, а затем перезвоним в цепочке обещаний. Я пытался использовать Q.all.then, но он достигнет Q.all тогдашнего прежде чем некоторые из этих обещаний -
Q.all([promiseOne, anotherPromise]).then(function(results) {
// will hit this before chain above is done
});
в моем jsfiddle Например, я только иметь одно обещание в Q.all, но в действительности это один из многих. Есть ли способ сделать эту работу тем, что я могу знать, когда все, в том числе прикованные, решены?
jsfiddle: http://jsfiddle.net/98rq0bs6/1/
Я понимаю идею, но а не механика того, как она на самом деле работает. Например, кажется, что как только вы привяжете «то» к обещанию, он будет знать о цепочке. Если это не возможно, потому что, возможно, это уже разрешено, похоже, что вы не сможете это сделать. – user210757
Оригинальное обещание знает только о обработчике, и оно должно называть его, когда оно разрешается. Но он не знает, что делает этот обработчик, а не о новом обещании, которое будет устранено с результатом вызова обработчика. В 'promTwo = summOne.then (two)', когда вы связываете другой обработчик с именем 'promOne', он будет вызван одновременно с' two'. Если вы хотите, чтобы обработчик ожидал 'two' и получил его возвращаемое значение, вам нужно связать его с' promTwo'. – Bergi