// pages/posts/posts.js var 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();//获取数据后执行回掉函数,即执行预先写好的操作
}
}