为什么setTimeout不返回我期望的值?

问题描述

我希望函数“ getRandomSave”返回一个异步值,这就是为什么我使用setTimeout的原因,它在控制台中可以正常工作,但是我不能使其返回控制台中显示的值。

服务中的

  getRandom(length){

    let jsonlength = length
    let a = 0;
    let randomNumber = new Array()


    var myInterval = setInterval(function(){
      
      a++

      if (a > jsonlength) {

        this.randomNumber = randomNumber;
        clearInterval(myInterval);

      }else{
         randomNumber.push(Math.ceil(Math.random()*10))
      }

    },.1)

    return new Promise((resolve)=>{
        setTimeout(()=>{resolve(randomNumber)},1000)
     })
     .then(x =>{return x})

  }
  
    getRandomSave(){
        setTimeout(function(){
            return this.randomNumber
        },200)
    }

执行时(在组件中):

  randomNumber(){ 

    let accesoriosJsonLength:number = this.accesoriosJson.length

    if (this.browserRefresh) {

        this.accesoriosService.getRandom(accesoriosJsonLength)
        .then(valor => console.log(valor))

    }else{
      this.accesoriosService.getRandomSave()
      console.log(this.accesoriosService.getRandomSave()); //undefined
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)