angularJS $超时执行方法立即执行

时间:2015-09-30 05:40:15

标签: javascript android angularjs ionic

我正在使用离子框架和cordova-plugin-shake插件检测我的某个Android应用程序的设备抖动,这很好用。但问题是在摇晃之后我想禁用此振动检测30秒,为此我试图使用$timeout这样:

$timeout($scope.watchForShake(), 30000);

但不管怎样,对于$timeout,无论延迟值是什么,$scope.watchForShake()都会立即执行。

我也尝试使用setTimeout,但结果仍然相同。

2 个答案:

答案 0 :(得分:4)

$timeout(和setTimeout)期望回调函数作为其第一个参数 - 即在某个超时后执行的函数。

如果你想要执行函数.watchForTimeout,那么将该函数本身作为第一个参数传递:

var callbackFn = $scope.watchForTimeout;
$timeout(callbackFn, 30000);

30秒后,将调用函数callbackFn,不带任何参数:callbackFn()

在你的情况下,你正在调用$scope.watchForTimeout,因此将该函数的返回值作为第一个参数传递给`$ timeout。那么,你目前所做的(错误的)是:

var returnVal = $scope.watchForTimeout();
$timeout(returnVal, 300000)

答案 1 :(得分:3)

$timeout($scope.watchForShake,30000);

在$ scope.watchForShake之后删除paranthesis。

相关问题