原始的 orderlists.data
我通过查询数据库拼接,做成了 orderLists
可是再次赋值的时候,始终还是原来的,到底是什么情况???
var orderLists = orderlists.data console.log(orderLists)//看这里 赋值成功了 console.log( this .data.lists) //到这里还能确认 lists 是空的 console.log(orderlists.data)//原始数据也修改了 this .setData({ lists: orderLists }) console.log( this .data.lists)//特么的为毛这里就没有??? |
从上到下 对应的输出
var
orderLists = orderlists.data 这个变量换成
let
orderLists = 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
(
var
i = 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.brief
tmplist.hiddeninfo = res.data.hiddeninfo
})
.
catch
(console.error)
orderLists[i] = tmplist
}
怎么拼接的 不影响吧? 你看上面打印的数据,同一个值,直接打印是拼接好的,赋值后打印就是没拼接的 ……
然后我,再尝试了 各种遍历方法,,最终效果都是这样…… 不懂发生了什么……
最终 加了个 800ms的延迟…… 来解决…… 问题是,如果网络很差,800延迟也不够啊……
数据拼接的那一块没有看到啊喂