gpt4 book ai didi

sproutcore - Sproutcore 计时器使用情况MaxInactiveInterval

转载 作者:行者123 更新时间:2023-12-03 13:38:44 25 4
gpt4 key购买 nike

两个绝对的初学者问题。
我的main.js enterState中有工作代码。

enterState: function(context) {
..
//keepAlive
var now = SC.DateTime.create();
if (now.get('hour') < 18){
SC.info ("main_state:enterState:go %@", now.get('hour'));
this.timer = SC.Timer.schedule({
target: this,
action: '_timerFired',
interval: 5000,
repeats: YES
});
} else {
SC.info ("MainState:enterState:nogo %@", now.get('hour'));
};
..
this.mainPane.append();
},

_timerFired: function(){
SC.info ("_timerFired %@", Date.now());
},


exitState: function() {
SC.info('main_state:exitState');
this.timer.invalidate();
this.mainPane.remove();
},

问题1:每次用户进入主 View 时都使用enterState,计时器计划是一次初始化还是每次用户切换 View 时初始化?

问题2:我认为我需要查询。 e.q.登录的用户名,以防止由于 session MaxInactiveInterval过期而自动注销。是否有示例代码在_timerFired函数中获取spring用户名?

我看到了Maurits的答案/解决方案,谢谢,但这对我来说太复杂了。

最佳答案

  • 每次进入此状态时,都会安排此计时器。如果这是应用程序的根状态,则将是一次。如果此状态用于显示mainPane,并且您以某种方式离开此状态并返回,则每次进入此状态时都会初始化此计时器。
  • 您可以将用户名保留为当前状态的属性(this._username),并且在调用_timerFired时将其作为当前状态(SC.Timer将通过目标进行处理),您将可以访问它。您当然需要以某种方式进行设置。另一个解决方案是直接从用于登录过程的 Controller 中读取它。

  • 然而,该解决方案容易出现麻烦。这样做的主要原因是您正在创建隐式状态。我的意思是,通过身份验证是一种应用程序状态,而不是通过状态图将其明确显示,而是将其隐藏在其中一种状态中。正如我在评论中写道:我来到了另一个问题中发布的解决方案,因为尝试了许多不同的解决方案并遇到了麻烦。我从这些问题中学到的是,状态图是您的 friend ,真正尝试与之合作将帮助您避免头疼!

    关于sproutcore - Sproutcore 计时器使用情况MaxInactiveInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30191535/

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