【发布时间】:2020-02-10 09:19:08
【问题描述】:
export function RecommendList(data) {
return (dispatch, getState) => {
let db = loadFB().firestore();
let query = db.collection('users').where("recommend", ">", "0").orderBy("recommend", "asc")
let user_list = [];
let uid_arr=[];
let result = [];
query.get().then(async docs => {
docs.forEach(doc => {
const recommender = doc.data();
const recommend_id = recommender.recommend;
const recommend_person = recommender.displayName;
user_list.push({id : recommend_id, recommend_person : recommend_person });
})
uid_arr = getRecommendList(user_list);
console.log("getRecommendList",uid_arr);
for(let i = 0; i < uid_arr.length; i++) {
const user_doc = await db.collection('users').doc(uid_arr[i].id).get();
console.log(user_doc.data());
let user_info = user_doc.data()
user_info.betball_dupli_count = uid_arr[i].count;
user_info.recommend_person = uid_arr[i].person;
console.log('displayname' , user_info.displayName , 'betball count',user_info.betball_dupli_count,'person',user_info.recommend_person);
result.push(user_info);
}
console.log('result!', result);
dispatch({
type: types.SET_USER_LIST,
data: result,
page: 1
})
})
}
}
我负责从 Fire Store 导入数据并将其发送给调度。 顺便说一句,我想通过javascript中的异步模式制作一个代码来提高这项工作的效率。我想知道如何异步等待和处理表单。
简而言之,如何将这段代码的“for”变成异步模式!
【问题讨论】:
-
把它包装成一个异步方法,返回你想要返回的东西。
-
我会说创建一个新的异步函数,将循环放入其中,然后在你正在执行 for 循环的地方等待它
标签: javascript asynchronous promise google-cloud-firestore async-await