收藏
回答

问个执行顺序方面的小白问题?

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 需求 客户端 wx58496b2a660ad8c5 2.4.0

为什么代码执行不是按顺序的啊,这就是解释语言,执行慢的晚输出啊!如果想要按顺序来执行怎么弄啊?

预计:

写入数据1

循环1

写入数据2

循环2

写入数据3

循环3

。。。


实际是:

循环1

循环2

循环3

。。。

写入数据11

写入数据11

写入数据11

。。。


aaa=1

    db_total=10

    console.log('1111总数1111: ', db_total)

    while (aaa <= db_total) {

        this.data.markers.push({latitude: 0,longitude: 0,}),

        db.collection('wy_gcb').where({ t0: aaa }).get({

            success: res => {this.setData({'markers[2].longitude': res.data[0].t4})

            console.log('写入数据', aaa)

          },})

      console.log('循环: ', aaa)

      aaa++;

    }


回答关注问题邀请回答
收藏

3 个回答

  • 再见,电脑崽
    再见,电脑崽
    2018-12-03

    Promise 风格 了解一下


    await db.collection('wy_gcb').where({t0: aaa}).get({
        success: (res) => {
            this.setData({'markers[2].longitude': res.data[0].t4})
            console.log('写入数据', aaa)
        }
    })


    2018-12-03
    有用
    回复 7
    • 星星海
      星星海
      2018-12-03

      直接加个await 就可以了吗?

      2018-12-03
      回复
    • 再见,电脑崽
      再见,电脑崽
      2018-12-03回复星星海

      你先试试看,云函数我没使用过,不过通过文档内容看,理论上是这样的。

      2018-12-03
      回复
    • 星星海
      星星海
      2018-12-03

      直接加个await 编译提示unknown: await is a reserved word (63:8) 错误啊

      2018-12-03
      回复
    • 再见,电脑崽
      再见,电脑崽
      2018-12-03回复星星海

      能提供完整代码么

      2018-12-03
      回复
    • 星星海
      星星海
      2018-12-03回复再见,电脑崽

      const app = getApp()


      Page({

      data: {

      markers: [

      {

      id: 0,

      latitude: 23.099994,

      longitude: 113.324520,

      label: {

      content: '我是这个气泡',

      fontSize: 14,

      color: '#ffffff',

      bgColor: '#000000',

      padding: 8,

      borderRadius: 4,

      boxShadow: '4px 8px 16px 0 rgba(0)'

      },

      },

      {

      id: 1,

      latitude: 23.199994,

      longitude: 113.424520,

      label: { content: "标题222" },

      }

      ],

      },


      onLoad: function (options) {

      var that = this;

      var aaa=1;

      var db_total=0;

      const db = wx.cloud.database()

      const _ = db.command


      db.collection('wy_gcb').where({}).count({

      success: function (res) {

      db_total = res.total

      console.log('总数1111: ', db_total)

      }

      })



      aaa=1

      console.log('1111总数1111: ', db_total)

      while (aaa <= db_total) {

      this.data.markers.push({

      id: 2,

      latitude: 0,

      longitude: 0,

      label: {

      content: '我是这个气泡',

      fontSize: 14,

      color: '#ffffff',

      bgColor: '#000000',

      padding: 8,

      borderRadius: 4,

      boxShadow: '4px 8px 16px 0 rgba(0)'

      },

      }),

      await db.collection('wy_gcb').where({ t0: aaa }).get({

      success: res => {

      this.setData({

      'markers[2].longitude': res.data[0].t4

      })

      this.setData({

      'markers[2].latitude': res.data[0].t5

      })

      this.setData({

      'markers[2].label.content': res.data[0].t2

      })


      console.log('[数据库] [查询记录] 成功: ', res)

      console.log('写入数据', aaa)

      },

      fail: err => {

      wx.showToast({

      icon: 'none',

      title: '查询记录失败'

      })

      console.error('[数据库] [查询记录] 失败:', err)

      }

      })

      aaa=aaa+1

      console.log('循环: ', aaa)

      }


      //   console.log('测试1: ', this.data.markers[0].latitude)

      //   console.log('测试1: ', this.data.markers[0].label.content)

      //   console.log('测试2: ', this.data.markers[1].latitude)

      //   console.log('测试3: ', this.data.markers[2].latitude)

      },


      add_mark: function (options) {

      },

      change_mark: function (options) {

      var that = this;

      that.setData({ 'markers[0].label.content': '更改更改更改测试字符串!' })

      console.log('测试123: ', this.data.markers[0].label.content)

      },


      })


      2018-12-03
      回复
    查看更多(2)
  • 星星海
    星星海
    2018-12-03

    知道了,谢谢!

    2018-12-03
    有用
    回复
  • 千山慕雪
    千山慕雪
    2018-12-03

    这是一个典型的闭包问题,用闭包思维方式来处理即可。

    2018-12-03
    有用
    回复
登录 后发表内容