मान लीजिए कि मेरे पास एक इनपुट टेक्स्ट फ़ील्ड है (Google खोज फ़ील्ड की तरह), जो बदलते समय, अनुरोध को ट्रिगर करेगा और कुछ परिणाम दिखाएगा।कोणीयजेएस - एक वादा कैसे रद्द करें?
उदाहरण के लिए, इनपुट में Dog
में
आइए प्रकार:
typed D -> Calls ctrl.search('D') -> Makes a request -> Changes model when success
typed DO -> Calls ctrl.search('DO') -> Makes a request -> Changes model when success
typed DOG -> Calls ctrl.search('DOG') -> Makes a request -> Changes model when success.
अब, मान लें कि DO
अनुरोध बाद में DOG
एक से प्रतिक्रिया करता हैं। मेरा मॉडल DO
परिणामों के साथ समाप्त होगा, भले ही मैंने DOG
टाइप किया हो।
इसके लिए, यदि मैं अक्षर टाइप करना जारी रखता हूं तो मुझे मौजूदा चालू अनुरोधों को रद्द या निरस्त करने का एक तरीका चाहिए। इस तरह, मेरा मॉडल केवल अंतिम अनुरोध द्वारा बदला जाता है।
मेरे इनपुट की तरह लग रहा है:
<input type="text" class="form-control" data-ng-model="query" data-ng-change="ctrl.search(query)" placeholder="Search" />
यहाँ है मेरी searchCtrl.js
:
var search;
var language;
var _this;
var SearchCtrl = function (searchService, lang)
{
search = searchService;
langauge = lang;
_this = this;
}
SearchCtrl.prototype.search = function (text)
{
var promise = search.language(language)
.facet('characters')
.highlight('quotes')
.query(text);
promise.then(function (response) {
if(!response) return;
_this.total = response.total;
_this.count = response.found;
_this.result = response.data;
});
}
हम promise..either हम करने के लिए 'reject' या' यह पूरा करने के लिए यह resolve' जरूरत रद्द नहीं कर सकते .. –
1) अपने टेक्स्टबॉक्स में डिबॉन्स का उपयोग करें आप एनजी-मॉडल-विकल्प का उपयोग कर सकते हैं 2) आप http विकल्प की टाइमआउट संपत्ति का वादा कर सकते हैं आप इसे रद्द कर सकते हैं (उस स्थगित वस्तु को अस्वीकार कर), लेकिन अनुरोध अभी भी सर्वर द्वारा संसाधित किया जाएगा, इसे क्लाइंट स्तर पर खारिज कर दिया जाएगा। – PSL
टाइपिंग में एक छोटा विराम होने तक अनुरोध को पहले स्थान पर नहीं भेजकर इसे हल करना बेहतर होगा। अनुरोध को रद्द करने से सर्वर को इसे संसाधित करने से नहीं रोका जाएगा यदि इसे पहले ही प्राप्त हो चुका है। https://docs.angularjs.org/api/ng/directive/ngModelOptions specfically debounce विकल्प में देखें। –