所以我有一个对象UserSearch
,这里有search
方法:
(function() {
var UserSearch = window.UserSearch = function () {};
UserSearch.prototype.search = function (query) {
if (query.length) {
/* performs search and returns results */
}
}
})();
另一个对象UserList
正在使用它:
(function() {
var UserList = window.UserList = function (userSearch) {
this._userSearch = userSearch;
}
UserList.prototype.performSearch = function (query) {
var results = this._userSearch.search(query);
/* handles results */
}
})();
它们的使用方式如下:
var userSearch = new UserSearch();
var userList1 = new UserList(userSearch);
var userList2 = new UserList(userSearch);
现在我需要的是UserSearch.search()
能够处理来自UserList
多个实例的调用并将结果返回到正确的UserList
。实际上,它可以正常工作,但是当我执行搜索时,我会发出一个fetch
请求,并且使用了生成器功能,如果在响应解析之前执行了新请求,则该函数会取消旧请求。也就是说,如果用户执行一项搜索并发现自己有错字,他可以快速更正并再次执行搜索,则旧的错字将被取消。但是现在的问题是,如果要从两个不同的列表中执行两个搜索,则较早的搜索将被取消。搜索是从不同的UserList
实例执行的,但是它们使用相同的UserSearch
实例afaik?我可以通过任何方式更改UserSearch.search
功能吗?我尝试将search
从原型移到构造函数,但这无济于事。我希望这很清楚,非常感谢!