का उपयोग करते समय वादा श्रृंखला का वादा करना मैं वादा एपीआई और चेनिंग को समझने की कोशिश कर रहा हूं, विशेष रूप से समय $timeout
.then()
के साथ उपयोग किया जाता है। मैंने निम्न से क्या उम्मीद की थी कि $timeout
एक वादा देता है, .then()
इसे हल होने तक नहीं बुलाया जाएगा।
लेकिन एबीएबी के बजाय, यह हर समय एबीबीए है।
मैं यह सुनिश्चित करने के लिए वादा एपीआई का उपयोग कैसे कर सकता हूं कि लंबी अवधि के कॉल (या $timeout
का उपयोग करके देरी कॉल) .then()
निष्पादित होने से पहले वास्तव में पूर्ण हो जाती है?
कोड
angular
.module('app', [])
.controller('ThenCtrl', ThenCtrl);
function ThenCtrl($timeout, $q) {
var vm = this;
vm.items = [];
$q.when(pushA()).then(pushB());
$timeout(pushA, 5000).then(pushB());
function pushA() {
vm.items.push('A');
}
function pushB() {
vm.items.push('B');
}
}
मार्कअप
<div ng-app="app">
<div ng-controller="ThenCtrl as vm">
{{vm.items}}
</div>
</div>
मैं एक बेला सेट कर लेते हैं: https://jsfiddle.net/kan3c61t/
यह भी एक बहुत ही दिलचस्प समाधान है। –
बहुत स्पष्ट रूप से कहा गया। उन मूलभूत जोड़ों में क्या अंतर हो सकता है। – twip
इससे मुझे बहुत मदद मिली – Fergus