Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redux中的JavaScript异步。。?_Javascript_Reactjs_Google Cloud Firestore - Fatal编程技术网

Redux中的JavaScript异步。。?

Redux中的JavaScript异步。。?,javascript,reactjs,google-cloud-firestore,Javascript,Reactjs,Google Cloud Firestore,功能中的操作(针对从firstore导入的数据的操作) 这里是索引数据 export async function getUserIndex (data){ let db = loadFB().firestore(); console.log(data) let date = moment(data).utc().format() let query = db.collection('users').where("create_date", ">",

功能中的操作(针对从firstore导入的数据的操作) 这里是索引数据


export async function getUserIndex (data){


    let db = loadFB().firestore();
    console.log(data)
    let date = moment(data).utc().format()
    let query = db.collection('users').where("create_date", ">", date)
    console.log(query)
    return await query.get().then(docs=>{
        let result =  docs.size
        console.log("result!!", result)
        return  result
    })
}

功能组件


    async getuserIndex_component(date){
        let number =""
        number = await userAction.getUserIndex(date)
        console.log("number",number)
        return await number
    }

const{user_list}=this.props//user_list=[{id:aa,pw:bb},{id:cc,pw:dd}…}数据
让数据=用户列表
设组={}
设数字=0
for(让数据的索引_数据){
让日期=时刻(索引数据。创建日期)。格式(“YYYY-MM-DD”)。切片(0,10)

设index=this.getuserIndex\u组件(日期)/由于
getuserIndex\u组件
是异步的,它将返回一个承诺。您需要等待该承诺得到解决,然后才能获得
索引
结果

首先,您应该能够将
getuserIndex\u组件
简化为

异步getuserIndex\u组件(日期){ let number=await userAction.getUserIndex(日期) 控制台日志(“编号”,编号) 返回号码 }
当您删除
console.log
时,它可能只是

异步getuserIndex\u组件(日期){ 返回userAction.getUserIndex(日期) } 正如我在评论中提到的。您可以发送所有异步调用,然后通过
Promise.all
等待所有承诺得到解决

类似这样的东西。(我无法测试其中任何一个,但它应该展示出总体思路。)

const{user\u list}=this.props;//user\u list=[{id:aa,pw:bb},{id:cc,pw:dd}数据
让数据=用户列表
设组={}
设数字=0
常数日期=[]
const promises=data.map((索引数据)=>{
常量日期=时刻(索引数据。创建日期)。格式(“YYYY-MM-DD”)。切片(0,10)
dates.push(date)//在所有承诺解决后使用。
返回此.getuserIndex\u组件(日期)//索引承诺。
})
常量索引=等待承诺。全部(承诺)
for(设i=0;i
您的调用
getuserIndex\u组件
但是函数是
getuserIndex\u组件
,末尾带有一个“s”。我假设这只是您的演示中的一个输入错误?或者有其他函数吗?因为
getuserIndex\u组件
是异步的,您只会收到一个承诺。简单的选择是
aw但是,ait
调用一次只能运行一个。相反,我建议将所有承诺推入一个数组,并在循环后使用
Promise.all()
。这是一个输入错误。我已对其进行了修改。“将所有承诺推入一个数组,并在循环后使用Promise.all()”我不知道你是什么意思。你能用代码扩展更多吗?谢谢,但是从promise前面的Await分类发送了一个错误。const index=Await promise.all(promises)^'await'只能在异步函数中使用,顶级函数不能是异步的。我不能在这里教授所有这些(无论如何,这是离题的),但从这里开始:@이창훈 正如我所说的,这是为了演示一般的想法。您没有提供任何关于这个函数的上下文,或者它是否是异步的。因此不可避免地需要一些修改。
const {user_list} = this.props; //user_list = [{id:aa, pw:bb},{id:cc, pw:dd}...} data
        let data = user_list
        let groups = {} 
        let number =0
        for (let index_data of data) {
            let date = moment(index_data.create_date).format("YYYY-MM-DD").slice(0, 10)

            let index = this.getuserIndex_component(date) //<==here log Promise{<pendding>}
            console.log(index)            
            if (groups[date]) {   
                let group = groups[date];
                group.push({ index: index-number, ...index_data });    
            } else {
                number =0;
                groups[date] = [{ index:  index-number, ...index_data }]
            }
            number++;
        }
        const dates = Object.keys(groups)
        const user_list_result = []
         for (let date of dates) {   
            user_list_result.push(...(groups[date]))
        }

return(...)