【问题标题】:Unique variable names唯一的变量名
【发布时间】:2017-12-13 16:20:05
【问题描述】:

我在我的 ionic3 应用程序中使用 ng2-simple-timer

这是来自 repo 的代码:

counter: number = 0;
timerId: string;
 
ngOnInit() {
    this.timerId = this.st.subscribe('5sec', () => this.callback());
}
 
callback() {
    this.counter++;
}

simpletimer 将创建计时器名称并每隔 'number' 秒打勾。

回调将返回计数器值(0、1、2、3、4、5、6等)

我的问题是什么?

我想定义唯一的uniquecounterName: number = 0;,因为我有不止一个计时器。

我的结果是什么:

  • return uniquecounterName(0,1,2,3,4,5,6, etc..)
  • return otheruniquecounterName(0,1,2,3,4,5,6, etc..)

换句话说,callback() 函数必须返回预定义的唯一变量名,例如 this.counter

callback(var) {
    var++;
}

这个不起作用,因为我想在我的视图中使用 var。 ....

【问题讨论】:

    标签: javascript angular ionic3


    【解决方案1】:

    这似乎不可能,如果您直接从文档中查看“GitHub: ng2-simple-timer-example”,您会发现作者如何处理多个计时器;代码我就不全部引用了,大家可以自己看,只是把回调的处理方式贴在这里:

    timer0callback(): void {
        this.counter0++;
    }
    
    timer1callback(): void {
        this.counter1++;
    }
    
    timer2callback(): void {
        this.counter2++;
    }
    

    如您所见,整个过程(新建、订阅、删除、取消订阅)是针对每个计时器完成的。因此该库不直接支持您的用例。

    你可以做的是内联回调函数,这样你就可以访问创建它时拥有的相同变量:

    function sub(name) {
        this.timerId = this.st.subscribe(name, () => {
            // still have access to the name
        });
    }
    

    当然,这必须非常适合您的目的,这是我从您的问题中收集到的尽可能多的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 2012-11-18
      • 2023-03-03
      • 2021-11-17
      • 2021-06-02
      • 1970-01-01
      相关资源
      最近更新 更多