wx.getStorage是异步模式,并不支持promise,所以用await没用,如果要马上拿到结果,用wx.getStorageSync不就行了
onLoad时调用getStorage等API不resolve的问题在 onLoad 中,调用 wx.getStorage 和 wx.cloud.callFunction,两者均不 resolve。用 await 以后的表现就是,脚本的执行在该行暂停。但是在下拉刷新中,却不存在此问题,两个接口均在很短的时间内 resolve 。 const { data: localData } = await wx.getStorage({ key, }); const { result: remoteData } = await wx.cloud.callFunction({ name: "getData", data: { key, }, }); 简单改写一下,却能解决问题: const { data: localData } = await new Promise((resolve, reject) => { setTimeout(() => { wx.getStorage({ key }) .then((res) => { resolve(res); } .catch((err) => { reject(err); }); }); }); const { result: remoteData } = await new Promise((resolve, reject) => { setTimeout(() => { wx.cloud .callFunction({ name: "getData", data: { key, }, }) .then((res) => { resolve(res); }) .catch((err) => { reject(err); }); }); }); 结合「下拉刷新的时候却不存在这个问题」,我猜测可能是在 onLoad 的周期内,以上两个接口还未初始化或者其他原因,导致无法正确调用。而使用 setTimeout 将他们强制推迟到下一个周期,或者下拉刷新时,这两个接口已经完成初始化,便不存在问题。 完整函数定义如下: loadPageData: async (page, key, callback = () => {}) => { wx.showLoading({ title: "", }); try { // load from local console.log(`try load ${key} from local...`); const { keys: storageKeys } = await wx.getStorageInfo(); if (storageKeys.includes(key)) { console.log(`the key ${key} exist in local, try loading...`); const { data: localData } = await wx.getStorage({ key, }); console.log({ key, localData, }); if (localData) { page.setData({ pageData: localData, }); wx.hideLoading(); callback(localData); } } else { console.log(`the key ${key} does not exist in local!`); } } catch (err) { console.error(err); } finally { try { // load from remote console.log(`try load ${key} from remote...`); const { result: remoteData } = await wx.cloud.callFunction({ name: "getData", data: { key, }, }); console.log({ key, remoteData, }); if (remoteData) { page.setData({ pageData: remoteData, }); wx.hideLoading(); wx.setStorage({ key: key, data: remoteData, }); callback(remoteData); } } catch (err) { console.error(err); } } },
2021-08-26放弃吧。。
小程序webview嵌入第三方H5,使用时候报非业务域名,该如何解决?小程序webview嵌入第三方H5,使用时候报非业务域名,看网上方案是在小程序里面配置域名。 但是域名是第三方的大企业的,不会给你上传校验文件到他们域名下,这种情况下有什么处理方法吗?
2021-08-26要把公众号的搜一搜服务栏目关掉。
微信搜一搜的服务栏目,审核一直不过,该怎么修改?微信搜一搜的服务栏目,提交了无数次审核,一直审核不过,说有同主体公众号提供了类似服务,我已经关闭了公众号菜单栏中进入小程序的链接,但是还是审核不过!求解! [图片][图片]
2021-08-26openid都可以获取到,用户昵称等其他用户详细信息是获取不到的
关于未关注公众号获取openid的问题?用户通过链接进入公众号H5页面, 但是在测试过程中发现, 已关注用户能获取到openid , 未关注用户也能获取到openid , 用的是静默的snsapi_base, 不是说只有关注的用户才能获取到openid吗? 进入index页面后, 发起请求到后端, 后端根据code换取openid, 不管是已关注还是未关注 都能获取到? let url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' + 'appid=' + that.$api.config.h5Appid + '&redirect_uri=' + encodeURIComponent("http://xxxx/wx/auth/getWxOpenId") + '&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect'; console.log("11111111",url) window.location = url
2021-08-26额。设置height:xxx不可以吗
pc端中微信小程序的scroll-view的滚动条高度怎么调整?[图片]
2021-07-27要修改一下云数据库集合权限设置,改为所有用户可读
Collection.watch 在删除和更新数据时不触发//app.js onLaunch 中注册 initWatchGoodsCollection(){ let that = this; const db = wx.cloud.database({ env: 'commodity-display-ckxt7', }); const watcher = db.collection('goods').watch({ onChange: snapshot=> { console.log(111); console.log('snapshot', snapshot) //初始化时会触发一次 if (snapshot.type!="init"){ that.initGoodsList(); } }, onError: err=> { console.error('the watch closed because of error', err) }, }) }, 更新和删除在均在云函数中调用 // 云函数入口文件 const cloud = require('wx-server-sdk') // 初始化 cloud cloud.init({ // API 调用都保持和云函数当前所在环境一致 env: cloud.DYNAMIC_CURRENT_ENV }) //初始化数据库 const db = cloud.database(); //初始化商品表 const GoodsCollection = db.collection("goods"); // 云函数入口函数 exports.main = async (event, context) => { let status = ""; let errMsg = ""; const goodsObj = event.goodsObj; let goods = await GoodsCollection.where({ uuid: goodsObj["uuid"], }).update({ data: { name: goodsObj["name"], kind: goodsObj["kind"], price: goodsObj["price"], origin_price: goodsObj["origin_price"], description: goodsObj["description"], deliver_price: goodsObj["deliver_price"], departure_place: goodsObj["departure_place"], } }).then(res => { status = "success"; errMsg = ""; }).catch(e => { status = "failed"; errMsg = e; }) return { status: status, errMsg: errMsg } }
2021-07-25找到原因了,要修改一下云数据库集合权限设置,改为所有用户可读
为什么使用Collection.watch监听不到更新数据事件?小程序端: const db = wx.cloud.database(); const watcher = db.collection('arrange_notify').doc('x').watch({ onChange: function(snapshot) { console.log('snapshot=====>>>>>', snapshot) }, onError: function(err) { console.error('the watch closed because of error', err) } }); 云函数: // 云函数入口文件 const cloud = require('wx-server-sdk'); cloud.init(); // 云函数入口函数 exports.main = async (event, context) => { //const wxContext = cloud.getWXContext(); const db = cloud.database(); try { const result = await db.collection('arrange_notify').doc("x").update({ // data 传入需要局部更新的数据 data: {test: new Date().getTime()} }); console.log("日程通知更新完毕:", result); } catch (e) { console.log("更新日程通知出现异常"); } }; 每次更新完数据,小程序端不会接收到更新事件
2021-07-25好奇这可以通过吗[狗头]
不知道一年只能改2次名的规则,想申请再改一次名字?您好! 不知道一年只能改2次名的规则,想申请再改一次名字,希望通过,谢谢!
2021-06-23我今天也刚好用到这个参数,发现在开发者工具上是不生效的,IOS上可以生效。不知道安卓怎么样
paging-enabled 等 scrollViewContext在微信开发者工具上失效?真机可以[图片] 基础库版本:2.17.0
2021-06-17问题太抽象了。最好是有代码大家瞧一瞧
小程序跳转后,页面卡死无法操作?小程序跳转页面后所有事件全部失效,无法点击,无法操作。不是每次都浮现,但是浮现概率挺高的。怎么破。。。江湖救急,在线等!
2021-06-17