从多个实例调用的方法不会单独运行

时间:2018-09-09 16:22:43

标签: javascript methods multiple-instances

所以我有一个对象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从原型移到构造函数,但这无济于事。我希望这很清楚,非常感谢!

0 个答案:

没有答案