সুতরাং আমার এমন এক পরিস্থিতি রয়েছে যেখানে আমার অজানা দৈর্ঘ্যের একাধিক প্রতিশ্রুতি রয়েছে। সমস্ত 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
চেইনগুলি সমাধান করার জন্য অপেক্ষা করার কোনও উপায় আছে কি?