假设我有一个输入文本字段(类似于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
慢。尽管我输入的是DOG
,但我的模型最终将使用DO
的结果。
为了解决这个问题,我需要一种方法来取消或中止当前正在进行的请求,如果我继续输入字符,那么只有最终请求会影响到我的模型。
我的输入看起来像下面这样:
<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;
});
}
reject
或resolve
来完成它。 - Pankaj Parkar