// pages/posts/posts.jsvar WxParse = require('../../wxParse/wxParse.js');const app = getApp();Page({ /** * 页面的初始数据 */ data: { posts: '',//文章 title: '', detailsId: '', postsTag: '',//标签名称 imgUrl: '',//分享图片, isGoIndex: false//返回首页按钮 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var that = this; // 判断数据来源 if (options.isshare == 1) { console.log('我是从分享进来的', options.isshare) // 重新请求数据 wx.request({ url: app.globalData.dataUrl.testUrl || app.globalData.dataUrl.officialUrl, success(res) { console.log('详情页:请求成功', res.data.posts) that.setData({ posts: res.data.posts, isGoIndex: true }) }, fail(res) { console.log('详情页:请求失败') } }) } else { console.log('我是从列表进来的', that.data.isGoIndex, options.isshare) that.setData({ posts: app.globalData.posts, isGoIndex: false }) } // 加载数据 app.promiseData().then(function () { // 数据筛选 setTimeout(function () {// 解决异步获取步骤问题 console.log('log页的posts数据:' + that.data.posts) that.data.posts.map(function (item, idx) { if (item.date == options.id) { WxParse.wxParse('article', 'html', item.content, that, 5); that.setData({ title: item.title, detailsId: options.id, postsTag: item.tags[0].name//存储当前文章标签 }) console.log('log页最终筛选出来的数据:' + that.data.title) } }) }, 50) }) }}) |
以上是我的代码,根据options.isshare来判断是从分享链接(1)进来的还是列表页(0)进来的,从列表页面进入页面浏览显示没有问题,但是从分享链接进入页面的时候app.promiseData()会优先于wx.request执行,倒是页面内容无法渲染展示,请问我应该如何解决此问题呢?

看到promise就头疼。
还是转成async/await方式最好。
就这玩意你封装成一个函数,然后函数的形参是一个回调函数,在获取到数据后执行,你那个app.promiseData()放到回调函数里写就行了if(options.isshare == 1) {console.log('我是从分享进来的', options.isshare)// 重新请求数据wx.request({url: app.globalData.dataUrl.testUrl || app.globalData.dataUrl.officialUrl,success(res) {console.log('详情页:请求成功', res.data.posts)that.setData({posts: res.data.posts,isGoIndex:true})}})}else{console.log('我是从列表进来的', that.data.isGoIndex, options.isshare)that.setData({posts: app.globalData.posts,isGoIndex:false})}你的目的是在获取数据后执行操作,回掉函数就可以解决这个问题
onLoad:function(options){
this.getPosts(options,()=>{
//这里写获取数据后的操作,预先写好操作
})
},
//第二个参数是回掉函数,在获取数据后执行
getPosts:function(options,callBack){
var that = this;
if(options.isshare == 1) {console.log('我是从分享进来的', options.isshare)// 重新请求数据wx.request({url: app.globalData.dataUrl.testUrl || app.globalData.dataUrl.officialUrl,success(res) {console.log('详情页:请求成功', res.data.posts)that.setData({posts: res.data.posts,isGoIndex:true})callBack();//获取数据后执行回掉函数,即执行预先写好的操作}})}else{console.log('我是从列表进来的', that.data.isGoIndex, options.isshare)that.setData({posts: app.globalData.posts,isGoIndex:false})callBack();//获取数据后执行回掉函数,即执行预先写好的操作}}