如何在 nativescript 中通过点击事件或离开页面停止 timer.setinterval

How to stop timer.setinterval with a tap event or leaving page in nativescript

我有一个计数器,它在加载页面时启动并在时间 == 0 触发对话框并导航到另一个页面时停止。但我也想在用户点击按钮或他放弃并离开页面时停止它。

下面是我启动计时器并在时间 === 0 时结束计时器的代码

var timeKeep = vm.time;
var count = 0;

countId = timer.setInterval(() => {
    timeCountDown();
    count += 1;
    if (count === timeKeep) {
        timer.clearInterval(countId);
        dialogs.alert({
            message: "Time Up!",
            okButtonText: "OK"
        });
        aemnavigation.goResults(vm.correct);
    }
}, 1000);   */
var timeKeep = vm.time;
var count = 0;

var countId = timer.setInterval(() => {
    timeCountDown();
    count += 1;
    if (count === timeKeep) {
        timer.clearInterval(countId);
        dialogs.alert({
            message: "Time Up!",
            okButtonText: "OK"
        });
        aemnavigation.goResults(vm.correct);
    }
}, 1000);  


exports.onButtonTap = function() {
  timer.clearInterval(countId);
  /** Do whatever else you need to **/
}

exports.onNavigatingFrom = function() {
  timer.clearInterval(countId);
}

在您的声明中 UI XML JS 文件:

<Page navigatingFrom="onNavigatingFrom">
  <Button tap="onButtonTap" text="Click Me"/>
</Page>

我也会推荐你的 timer.clearInterval(countId) 函数你验证countId仍然有效;清除间隔后使其无效;这样你就没有任何奇怪的极端情况了。