gpt4 book ai didi

JavaScript 定时器不工作

转载 作者:行者123 更新时间:2023-11-30 17:22:07 26 4
gpt4 key购买 nike

我创建了一个名为 ExtremeNotifications.js 的文件并添加到 _Layout.cshtml 主布局中。

ExtremeNotifications.js 包含以下 JavaScript 代码:

var extremeNotifications = extremeNotifications || {};

extremeNotifications = (function () {

var baseURL = document.baseURI;
var url = baseURL + 'api/usernotifications';
var isNotificationServiceStarted = false;
var timer;

function getPendingNotifications() {
$.ajax({ url: url, success: dataRetrieved, type: 'GET', dataType: 'json' });
}

function dataRetrieved(data) {
alert(data);
}

function startNotifications() {
if (!isNotificationServiceStarted) {
timer = setInterval(getPendingNotifications, 3000);
isNotificationServiceStarted = true;
}
}

function stopNotifications() {
clearInterval(timer);
isNotificationServiceStarted = false;
}

return {
start: startNotifications(),
getPendingNotifications: getPendingNotifications(),
isNotificationServiceStarted: isNotificationServiceStarted,
stop: stopNotifications()
}
})();

然后在我的主页 Index.cshtml 中,我使用以下代码启动通知,并且仅当 User.Identity.IsAuthenticated 时:

<script>
extremeNotifications.start();
</script>

现在,当我的页面启动并且我是经过身份验证的用户时,我会在第一时间收到一个警告框,但 3 秒后我再也看不到另一个警告。

有什么意见吗?

最佳答案

你很接近,但你错误地创建了返回的对象:

return {
start: startNotifications,
getPendingNotifications: getPendingNotifications,
isNotificationServiceStarted: isNotificationServiceStarted,
stop: stopNotifications
};

通过在函数名称后包含 (),您的代码调用函数并返回它们的返回值,而不是返回对函数本身的引用。

关于JavaScript 定时器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com