微信小程序变量赋值失败

本人一直以来都是C程序员,最近有需求,需要做个微信小程序,其中有不少坎坷。C语言编程和高级语言相比,思维逻辑还是有些不一样的。例如今天遇到的问题,我在onload函数中给一个变量赋值,紧接着要使用,但发现变量依旧是空的,代码如下:

  
onLoad: function (options) {
    news.limit(5).get({
      success:res=>{
        this.setData({newsList:res.data})
      }
    })

    console.log(this.data.newsList);
    this.setSwiperImg();//这个函数中用到了newsList变量
    
  }

实际发现后面日志和setSwiperImg()函数中用到的newsList都是空的。但是在调试窗口查看变量是有值的。

其实老鸟可能一眼就看出了上面代码的问题,我的思维一直固化在C的顺序执行里面(虽然C也可以做到异步执行,但是大多数时候都是顺序执行的)。最后想了半天,终于顿悟了:

      success:res=>{
        this.setData({newsList:res.data})
      }

这个应该是个回调函数,在news.limit(5).get执行成功后,异步回调执行。所以在时间上是滞后的。在我后面语句使用到newsList变量的时候,回调还没执行呢。既然想通了,那么立即修改为:

  onLoad: function (options) {
    news.limit(5).get({
      success:res=>{
        this.setData({newsList:res.data})
        console.log(this.data.newsList);
        this.setSwiperImg();
      }
    })
  },

保存,运行,OK!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微信小程序中,setData方法用于更新小程序的数据,可以通过该方法将数据更新到小程序的视图层。如果你在使用setData方法时发生赋值失败的情况,可能是以下几个原因: 1. 数据类型不匹配:在setData方法中,数据类型必须与定义的数据类型一致,否则会导致赋值失败。比如,如果你定义了一个Number类型的变量,但是在setData方法中却传入了String类型的值,就会导致赋值失败。 2. 变量未定义或未初始化:在setData方法中,需要传入定义或初始化过的变量,否则会导致赋值失败。如果你赋值变量未定义或未初始化,就会导致setData方法无法找到该变量,从而赋值失败。 3. 赋值语法错误:在使用setData方法时,需要注意赋值语法是否正确。如果你的赋值语法有误,就会导致赋值失败。比如,如果你在setData方法中使用了错误的变量名或操作符,就会导致赋值失败。 4. 异步调用问题:在某些情况下,setData方法可能会发生异步调用的问题。如果在异步调用中使用setData方法,就可能导致赋值失败。为了避免这种问题,可以使用wx.nextTick方法来延迟setData方法的执行,确保其在异步调用之后执行。 如果以上方法仍然无法解决你的问题,可以先检查你的代码是否存在其他问题,例如语法错误、变量命名错误等等。同时,建议在控制台输出相关变量的值,查看其是否正确赋值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值