我正在使用离子框架和cordova-plugin-shake插件检测我的某个Android应用程序的设备抖动,这很好用。但问题是在摇晃之后我想禁用此振动检测30秒,为此我试图使用$timeout
这样:
$timeout($scope.watchForShake(), 30000);
但不管怎样,对于$timeout
,无论延迟值是什么,$scope.watchForShake()
都会立即执行。
我也尝试使用setTimeout
,但结果仍然相同。
答案 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。