小程序
小游戏
企业微信
微信支付
扫描小程序码分享
- 当前 Bug 的表现(可附上截图)
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
问题描述:从一个云开发集合中多次调用统计API,因为是异步返回结果,每次返回的都不一样.
需要:因为是分类统计,需要知道返回的结果,是什么条件(由'ID0'+i控制)下产生的结果
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
两个问题
既然用正则来匹配, 感觉可以只用查询一次, 然后再来找映射关系
按现有的多次查询, 你的写法算是个经典的异步问题, 可以试下其他回答的建议, 把 `i` 作为参数传递
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
//生成查询Promise数组
Promise.all(
this
.data.courses.map(
function
(item, i){
return
db.collection(
"questions"
).where({
chapterID: db.RegExp({
regexp:
"ID0"
+ i
})
}).count();
}))
.then(
(resultList){
console.log(resultList);
//按查询的数组顺序输出
这个意思?
你现在是由courses里的结果来查询的,查询时这里面的数据是确定了的。所以问题只是你for循环里的异步回调的接收和整理的问题。
你查询的每次都不一样是因为var声明时把i提升到了外部,而你查询都是异步的,故查询的条件可以执行,但then接收时都是一个值。这里可以用Promise.all()来按照下标来匹配courses读取
写成递归函数,在异步回调中循环
不知道怎么写,啊啊...郁闷死我了
兄弟们,急啊,在线等...
有人吗?
最简单的方法,把 i 作为参数,再把 i 返回
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
两个问题
既然用正则来匹配, 感觉可以只用查询一次, 然后再来找映射关系
按现有的多次查询, 你的写法算是个经典的异步问题, 可以试下其他回答的建议, 把 `i` 作为参数传递
//生成查询Promise数组
Promise.all(
this
.data.courses.map(
function
(item, i){
return
db.collection(
"questions"
).where({
chapterID: db.RegExp({
regexp:
"ID0"
+ i
})
}).count();
}))
.then(
function
(resultList){
console.log(resultList);
//按查询的数组顺序输出
})
这个意思?
你现在是由courses里的结果来查询的,查询时这里面的数据是确定了的。所以问题只是你for循环里的异步回调的接收和整理的问题。
你查询的每次都不一样是因为var声明时把i提升到了外部,而你查询都是异步的,故查询的条件可以执行,但then接收时都是一个值。这里可以用Promise.all()来按照下标来匹配courses读取
写成递归函数,在异步回调中循环
不知道怎么写,啊啊...郁闷死我了
兄弟们,急啊,在线等...
有人吗?
最简单的方法,把 i 作为参数,再把 i 返回