收藏
回答

请问各位大神,为什么我的部分代码有的时候会不执行?比如如下代码中的 console.log这句

Page({
  data: {
    ne:[1,2,3],
    markers: [
      ]
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    const app = getApp()
    const db = wx.cloud.database()
    db.collection('tingdianxinxi').where({
      tp: "停电"
    }).get({
      success: function (res) {
        app.globalData.ne.push(res.data)
      }
    })
    db.collection('tingdianxinxi').where({
      tp: "停电"
    }).count({
      success: function (res) {
        app.globalData.total = res.total
        for (var i = 0; i < app.globalData.total; i++) {
          app.globalData.marker_new.push({
            iconPath: "/resources/others.png",
            id: i,
            latitude: app.globalData.ne[1][i].location.latitude,
            longitude: app.globalData.ne[1][i].location.longitude,
            width: 50,
            height: 50
          })
        }
        console.log(app.globalData.marker_new)
      }
    })
    var that=this
    that.setData({
      ne:app.globalData.ne,
      markers:app.globalData.marker_new
    })
    wx.getLocation({
       type: 'wgs84',
       success(res) {
         that.setData({
           latitude: res.latitude,
           longitude: res.longitude,
         })
       }
      })
  },

js文件如上,为什么 console.log(app.globalData.marker_new)这句有时候编译后会输出有时候又不输出?

最后一次编辑于  2020-02-06
回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2020-02-06

    先格式化一下代码。

    2020-02-06
    有用
    回复 7
    • 王圣St.
      王圣St.
      2020-02-06
      谢谢,已经格式化,自己摸索了一下,怀疑是执行顺序的问题,js文件并不是严格按顺序执行的,可能是在app.globalData.marker_new还未赋值的时候先打印了,导致未输出任何值,就以为这句话未执行。
      2020-02-06
      回复
    • 老张
      老张
      2020-02-06回复王圣St.
      这种情况一般都是异步问题。
      2020-02-06
      回复
    • 王圣St.
      王圣St.
      2020-02-06回复老张
      好的,我去研究下,再请问下小程序onload函数有执行时间限制吗?我发现这个for循环会只执行1次,但是输出app.globalData.total这个值却是为2,不清楚为什么会执行一次就中断了呢?就连下面的console.log也不执行了。
      2020-02-06
      回复
    • 王圣St.
      王圣St.
      2020-02-06回复老张
      或者说是不是success这个回调函数有执行时间限制呢?
      2020-02-06
      1
      回复
    • 老张
      老张
      2020-02-08回复王圣St.
      异步情况下,把语句写在success里,不要写在外面
      2020-02-08
      1
      回复
    查看更多(2)
登录 后发表内容
问题标签