栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何获取角度$ interval的状态-检查间隔是否已取消

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何获取角度$ interval的状态-检查间隔是否已取消

After

var getOverviewMapTimer = $interval(...);

getOverviewMapTimer
持有对一个对象的引用(恰好是一个承诺)。

这样做

$interval.cancel(getOverviewMapTimer)
会传递(并取消)
getOverviewMapTimer
变量引用的对象,但是无法将对象转换为null。该
getOverviewMapTimer
变量将继续持有该承诺的对象,并把它设置为null的唯一途径一提的是,通过一个新的任务(即明确地将其设置为空):

var getOverviewMapTimer = $interval(...);...$interval.cancel(getOverviewMapTimer);getOverviewMapTimer = null;

高级主题:

拥有一种简单的方法来确定间隔承诺是否已取消确实听起来不错,例如,向

cancelled
promise对象添加自定义属性,并在取消间隔时将其值设置为true。
Angular非常酷,具有令人难以置信的灵活性和可扩展性,因此使用 Service
Decorator

的概念,我们可以“增强”
$interval
服务,扩展其
cancel()
方法以添加
cancelled
属性,并
true
在取消间隔承诺时将其值设置为:

app.config(function ($provide) {        $provide.decorator('$interval', function ($delegate) {                var originalCancel = $delegate.cancel;                $delegate.cancel = function (intervalPromise) {  var retValue = originalCancel(intervalPromise);  if (retValue && intervalPromise) {     intervalPromise.cancelled = true; }  return retValue;        };                return $delegate;    });});

现在,我们可以

$interval
像往常一样使用该服务,并且我们始终可以检查间隔承诺的
cancelled
属性以了解其是否已取消。

var getOverviewMapTimer = $interval(...);...console.log(!!getOverviewMapTimer.cancelled);   // false$interval.cancel(getOverviewMapTimer);console.log(!!getOverviewMapTimer.cancelled);   // true

另请参 见此简短演示



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/397941.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号