首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS $interval或$timeout

AngularJS $interval或$timeout
EN

Stack Overflow用户
提问于 2016-10-14 04:47:23
回答 1查看 134关注 0票数 0

我用AngularJS和Elasticsearch构建了一个小的搜索应用程序(电影)。在测试的过程中,我意识到当事情比计划的时间更长时,我忘记了添加一个超时,但我在让它工作时遇到了问题。实际上,我决定使用$interval而不是$timeout,因为它看起来更好,因为它仍然在工作以获得结果,而不是在花费更长时间时停止进程。

下面是我的代码:

代码语言:javascript
复制
    vm.search = function() {
    vm.currentPage = 1;
    vm.results.documents = [];
    vm.isSearching = true;
    $state.go('search');
    return searchService.search(vm.searchTerms, vm.currentPage).then(function(es_return) {      
      var totalItems = es_return.hits.total;
      var totalTime = es_return.took;
      var numPages = Math.ceil(es_return.hits.total / vm.itemsPerPage);
      vm.results.pagination = [];
      for (var i = 1; i <= 100; i++) {
        vm.results.totalItems = totalItems;
        vm.results.queryTime = totalTime;

        vm.results.pagination = searchService.formatResults(es_return.hits.hits);//load all results
        vm.results.documents = vm.results.pagination.slice(vm.currentPage, vm.itemsPerPage);
        } 
          vm.noResults = true;
        }
    ),
    function(error){
      console.log('ERROR: ', error.message);
      vm.isSearching = false;
    }
  };

我在想我该把它放在哪里

代码语言:javascript
复制
if(totalItems > 0) {
  $interval(function(){
    vm.isSearching = true;
  }, 2000);

在那里面。

我试着把它放在for循环中,但没有找到joy :(

EN

回答 1

Stack Overflow用户

发布于 2016-10-14 05:07:01

您可以进一步链接promise,并从$q (TypeScript:$q:IQService)生成一个延迟,在一段时间后拒绝它,并显示拒绝消息。

var defer = $q.defer();

并在某处返回defer.promise

代码语言:javascript
复制
SearchService.$inject = ["$q", "$http"]
function SearchService($q, $http) {
    var defaultWaitUntilTimeout = 2000;
    this.search = function (param, param2, waitUntilTimeout) {
        var defer = $q.defer();

        $http().get().then(function (result) { defer.resolve(result);})

        $timeout(function () { defer.reject();}, waitUntilTimeout || defaultWaitUntilTimeout); // now the rejection function of the promise will get called

        return defer.promise;
    }
}

我希望你明白我的意思

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40030685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档