2014-12-09 49 views
0

我有一個保存功能,其運行速度如此之快,幾乎看起來令人難以置信,如果過快完成以使其「感覺到」,我想人爲地增加所需的時間,更好。角度確保操作至少需要N毫秒才能完成

目前我有一個用於保存計劃的服務,如果它太快,我該如何檢測並等待N毫秒?

addScheduleServices.factory('addScheduleAPIservice', function ($http) { 
    var addScheduleAPI = {}; 

    // this is often too quick 
    addScheduleAPI.save = function (schedule) { 
     return $http({ 
      method: 'POST', 
      data: schedule, 
      url: '/settings/addschedule' 
     }); 
    } 

    return addScheduleAPI; 
}); 

// Use within controller 
addScheduleAPIservice.save($scope.schedule) 
    .success(function() { 
     //success state 
    }) 
    .error(function() { 
     // error state 
    }); 
+0

我強烈建議不要花時間擔心它。現在是2014年,人們希望即時保存數據等微不足道的事情。 – JJJ 2014-12-09 12:01:16

+0

我的主要擔心是我把一個半透明的模型放在閃爍的窗體上。當然,擔心用戶界面設計是件好事? :) – Chris 2014-12-09 12:02:24

+1

恕我直言,你正在接近錯誤的方式問題。等待N ms,如果請求還沒有完成*然後*顯示「加載」覆蓋。兩全其美。 – JJJ 2014-12-09 12:05:19

回答

2

您可以引入$ q和$ timeout。 $ q允許您等待多個承諾解決。使用這個,你可以實現一個最小持續時間:

addScheduleServices.factory('addScheduleAPIservice', function ($http, $q, $timeout) { 
    var addScheduleAPI = {}; 

    // this is often too quick 
    addScheduleAPI.save = function (schedule) { 
     var addSchedule = $http({ 
      method: 'POST', 
      data: schedule, 
      url: '/settings/addschedule' 
     }); 
     var wait = $timeout(function() { 
     }, 3000, false); 
     return $q.all([addSchedule, wait]).then(function(p1) { 
      // success 
      return p1; 
     }); 
    } 

    return addScheduleAPI; 
}); 
+0

這正是我之後,謝謝 – Chris 2014-12-09 12:18:01

+0

如何將時間表傳遞到'addSchedule'我可以做'[addSchedule(schedule),wait]' – Chris 2014-12-09 12:18:52

+0

這個例子並不完全工作,它呻吟的說'schedule'是未定義的'addSchedule'(new code) – Chris 2014-12-09 12:21:02

相關問題