小程序如何在一个生命周期函数内顺序执行方法?
发布于 6 年前 作者 sunxia 9767 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

onLoad: function (options) {

    var that = this;

    wx.getStorage({

     key: “id”,

     success: function(res) {

     that.setData({

     id: id

     })

     }

    })

    that.showInfos();

},

showInfos: function(e) {

    console.log(this.data.id);

}

如上代码,运行后that.showInfos()会先执行,wx.getStorage后执行,那么久无法获得预期的id值,请问如何保证让wx.getStorage先执行,that.showInfos()后执行?

  • 希望提供的能力

onLoad()里先执行wx.getStorage, 再执行that.showInfos()。

6 回复

用new Promise,比回调好,自己百度去查查,很多的

这样试试呢?

onLoad: function (options) {

    var that = this;

    wx.getStorage({

     key: "id",

     success: function(res) {

     that.setData({

     id: id

     })

                that.showInfos();   //放在success方法里面执行

     }

    })

},

showInfos: function(e) {

    console.log(this.data.id);

}

想想也是哦,老铁们这么一说,我似乎有点迷糊了。

那微信小程序有什么方法可以实现方法的顺序执行?

wx.getStorage为异步操作,可以改成wx.getStorageSync即可

that.showInfos()丢到wx.getStorage的success方法里面去执行不就可以了吗,或者用wx.getStorageSync。。。

放在wx.getStorage成功回调里面!!

回到顶部