【问题标题】:value setInterval does not match值 setInterval 不匹配
【发布时间】:2021-10-16 12:52:31
【问题描述】:

我有一个句子getter函数,我想将返回值放入setInterval但返回的值不清楚

       //RandomTeks
        let getTeks = () =>{
          this.idNumber = Math.floor(Math.random() * this.idRandom) + 1;
          this.kalimat = resp[this.idNumber].kalimat
          this.kalimatGlobal = this.kalimat

         return this.kalimatGlobal //sentence content
        }

        //Interval
        this.intervalValue = setInterval(() => {
            return getTeks()
        }, 500);

        console.log(this.intervalValue)//return value is 9 or 10

我想知道为什么内容为 setInterval 的变量的返回值是数字 9 或数字 10?有人知道为什么吗?

任何帮助、建议或任何东西我都非常感谢

【问题讨论】:

    标签: angular typescript setinterval


    【解决方案1】:

    setIntervalsetTimeout 返回一个数字,即计时器 ID。然后,您可以使用它来取消您的间隔或超时:

    const interval = setInterval(() => {
      console.log('Interval')
    }, 1000) // Set interval that runs every second
    
    setTimeout(() => {
      clearInterval(interval)
    }, 10000) // And stop it after 10 seconds
    

    它不返回任何值。您希望它返回哪个值?考虑这段代码

    console.log('Before interval')
    
    const value = setInterval(() => {
      return "Inside interval"
    }, 1000)
    
    console.log('After interval')
    

    这实际上是打印出来的

    Before interval
    After interval
    Inside interval
    Inside interval
    Inside interval
    ...
    

    这是因为当您调用 setInterval 时,您的代码不会停止执行,它会继续执行,到达 console.log('After interval') 并且仅在一秒钟后在间隔内运行您的函数。因此,在您调用 setInterval 之后,您的函数还没有被调用,因此在您的示例中没有分配给 valueintervalValue 的值。

    所以如何解决它取决于你将如何使用它。您可以在区间内获取任务并在那里使用它们:

    function handleSomething(teks) {
      // do something with teks
    }
    
    setInterval(() => {
      const teks = getTeks()
      handleSomething(teks)
    }, 500);
    

    或者您可以创建一个可变变量并定期为其赋值

    let intervalValue = null
    
    setInterval(() => {
      intervalValue = getTeks()
    }, 500)
    

    或者也许你可以使用 Promises,这真的取决于

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多