小程序如何在一个生命周期函数内顺序执行方法?

发布于 7 年前作者 sunxia9979 次浏览最后编辑 7 年前来自 ask
  • 需求的场景描述(希望解决的问题)

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 回复
yhou
yhou1 楼6 年前

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

qlai
qlai2 楼6 年前

这样试试呢?

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);

}

jwen
jwen3 楼6 年前

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

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

taoyin
taoyin4 楼6 年前

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

stao
stao5 楼6 年前

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

wenxiuying
wenxiuying6 楼5 年前

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