原始的 orderlists.data
我通过查询数据库拼接,做成了 orderLists
可是再次赋值的时候,始终还是原来的,到底是什么情况???
var orderLists = orderlists.dataconsole.log(orderLists)//看这里 赋值成功了console.log(this.data.lists)//到这里还能确认 lists 是空的console.log(orderlists.data)//原始数据也修改了 this.setData({lists: orderLists})console.log(this.data.lists)//特么的为毛这里就没有??? |
从上到下 对应的输出

varorderLists = orderlists.data 这个变量换成letorderLists = orderlists.data 试试。对对对对 我试试我试试
我不是前端,不是很清楚,感觉跟 vue 这个机制有点像,你可以试试
https://cn.vuejs.org/v2/guide/reactivity.html#%E6%A3%80%E6%B5%8B%E5%8F%98%E5%8C%96%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9
是的 机制很像…… 纠结的其实是 Promise.then 这种方法是无效的。。。换个 setTimeout(fn, 0) 就可以。不过显然,setTimeout(fn, 0)这种有点不好用吧…… 然后我尝试了async/await 这种,依旧无效。setDate的优先级似乎太高了 哈哈。 但是仅限于 云开发的函数们哦 。。。普通的request尚未发现有问题。
emm...
我还没用过云开发的函数。
感觉自己就本地都玩不转了,一次性 setData 两个值,只成功了一个...
我也是第一次用哈哈 反正 用的很恼火 不过 感觉 云函数 以后是趋势的嘛 就忍了 阿里的无服务器函数 一个意思的吧
for(vari = 0; i < orderLists.length; i++) {//反过来想,把每一条数据插入到orderlist中不就好了let tmplist = orderLists[i]db.collection('goodsLists').doc(orderLists[i].goods).field({brief:true,hiddeninfo:true}).get().then(res => {tmplist.brief = res.data.brieftmplist.hiddeninfo = res.data.hiddeninfo}).catch(console.error)orderLists[i] = tmplist}怎么拼接的 不影响吧? 你看上面打印的数据,同一个值,直接打印是拼接好的,赋值后打印就是没拼接的 ……
然后我,再尝试了 各种遍历方法,,最终效果都是这样…… 不懂发生了什么……
最终 加了个 800ms的延迟…… 来解决…… 问题是,如果网络很差,800延迟也不够啊……
数据拼接的那一块没有看到啊喂