इसलिए मेरे पास एक ऐसी स्थिति है जहां मेरे पास एक अज्ञात लंबाई की कई वादे श्रृंखलाएं हैं। मैं चाहता हूं कि सभी CHAINS संसाधित होने पर कुछ कार्रवाई हो। क्या यह भी संभव है? यहाँ एक उदाहरण है:
app.controller('MainCtrl', function($scope, $q, $timeout) {
var one = $q.defer();
var two = $q.defer();
var three = $q.defer();
var all = $q.all([one.promise, two.promise, three.promise]);
all.then(allSuccess);
function success(data) {
console.log(data);
return data + "Chained";
}
function allSuccess(){
console.log("ALL PROMISES RESOLVED")
}
one.promise.then(success).then(success);
two.promise.then(success);
three.promise.then(success).then(success).then(success);
$timeout(function () {
one.resolve("one done");
}, Math.random() * 1000);
$timeout(function () {
two.resolve("two done");
}, Math.random() * 1000);
$timeout(function () {
three.resolve("three done");
}, Math.random() * 1000);
});
इस उदाहरण में, मैंने $q.all()
एक, दो, और तीन वादों की स्थापना की , जो कुछ यादृच्छिक समय में हल हो जाएंगे। मैं फिर एक और तीन के सिरों पर वादे जोड़ता हूं। मैं चाहता हूं कि all
जब सभी जंजीरों का समाधान हो जाए तो मैं हल करूं । जब मैं यह कोड चलाता हूं तो यहां आउटपुट होता है:
one done
one doneChained
two done
three done
ALL PROMISES RESOLVED
three doneChained
three doneChainedChained
क्या जंजीरों को हल करने के लिए इंतजार करने का एक तरीका है?