Javascript 你是如何变成“a”的;至于;进入异步模式? 导出功能推荐列表(数据){ 返回(调度,获取状态)=>{ 设db=loadFB().firestore(); 让query=db.collection('users')。其中(“推荐”、“>”、“0”)。orderBy(“推荐”、“asc”) 让用户_list=[]; 设uid_arr=[]; 让结果=[]; query.get().then(异步文档=>{ docs.forEach(doc=>{ const recommender=doc.data(); const recomment_id=recommender.recomment; const recomment\u person=recommender.displayName; 用户列表。推送({id:recommend\u id,recommend\u person:recommend\u person}); }) uid\u arr=getRecommendList(用户列表); 日志(“getRecommendList”,uid\u arr); for(设i=0;i

Javascript 你是如何变成“a”的;至于;进入异步模式? 导出功能推荐列表(数据){ 返回(调度,获取状态)=>{ 设db=loadFB().firestore(); 让query=db.collection('users')。其中(“推荐”、“>”、“0”)。orderBy(“推荐”、“asc”) 让用户_list=[]; 设uid_arr=[]; 让结果=[]; query.get().then(异步文档=>{ docs.forEach(doc=>{ const recommender=doc.data(); const recomment_id=recommender.recomment; const recomment\u person=recommender.displayName; 用户列表。推送({id:recommend\u id,recommend\u person:recommend\u person}); }) uid\u arr=getRecommendList(用户列表); 日志(“getRecommendList”,uid\u arr); for(设i=0;i,javascript,asynchronous,promise,google-cloud-firestore,async-await,Javascript,Asynchronous,Promise,Google Cloud Firestore,Async Await,我的工作是从Fire Store导入数据并将其发送到调度。 顺便说一句,我想编写一段代码,通过javascript中的异步模式提高这项工作的效率。我想知道如何等待并异步处理表单 简而言之,如何将此代码的“for”转换为异步模式 对现有代码进行最小更改: let userquerys=[]; for(设i=0;i{ console.log(user_doc.data()); 让用户\信息=用户\单据数据() user\u info.betball\u dupli\u count=uid\u arr

我的工作是从Fire Store导入数据并将其发送到调度。 顺便说一句,我想编写一段代码,通过javascript中的异步模式提高这项工作的效率。我想知道如何等待并异步处理表单


简而言之,如何将此代码的“for”转换为异步模式

对现有代码进行最小更改:

let userquerys=[];
for(设i=0;i{
console.log(user_doc.data());
让用户\信息=用户\单据数据()
user\u info.betball\u dupli\u count=uid\u arr[i]。count;
用户\u info.recomment\u person=uid\u arr[i]。person;
console.log('displayname',user\u info.displayname',betball count',user\u info.betball\u dupli\u count',person',user\u info.recommendant\u person);
结果推送(用户信息);
})
)
}
等待承诺。全部(用户查询);

外部
for
循环只会启动查询,然后在特定查询完成时运行每个查询的
部分。在
for
循环之外,
Promise.all
调用将等待所有查询完成后再继续。

将其包装到一个异步方法中,该方法返回您想要返回的内容。我会说创建一个新的异步函数,将循环放入其中,并在您正在执行for循环的地方等待它非常值得一读
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
            })
        })
    }
}