使用$ timeout来延迟

时间:2015-11-18 15:44:30

标签: angularjs

我正在尝试模拟一个延迟,所以我有一个Angular控制器函数:

vm.signup = function (model) {
  vm.mode: "busy";
  var x = true;
  $timeout(function () { x = false; }, 4000);
  vm.mode: "success";
};

在模式设置为忙碌和设置为成功之间,我没有4秒的延迟。我错过了什么?

2 个答案:

答案 0 :(得分:4)

$timeout是一种异步性能。并且延迟块内的所有内容都会发生延迟。

因此,操作顺序如下:

  1. vm.mode = busy;
  2. var x = true;
  3. 延迟启动异步
  4. vm.mode = "success";
  5. 延迟时间后解决:x = false;
  6. 我认为你想要在你的超时功能中使用vm.mode = 'success'

    vm.signup = function (model) {
      vm.mode = "busy";
      var x = true;
      $timeout(function () { 
        x = false; 
        vm.mode = "success";
      }, 4000);
    
    };
    

答案 1 :(得分:0)

$ timeout调用指定延迟后传入的任何函数。您需要将vm.mode = "success"放在传递给$ timeout的函数中。

类似于sleep(),类似于C#中的函数,以及整个线程暂停的情况。