Javascript 像承诺一样执行循环

Javascript 像承诺一样执行循环,javascript,velo,Javascript,Velo,我在for循环中使用wixData.query()获得的记录要么没有添加到数组中,要么(我认为更可能的是)在将记录分配到数组之前执行我的console.log() 在执行for循环之前,我从主列表中获取我想要的所有记录的记录ID。一旦它们都找到了,就会调用一个函数来查找另外两个数据库中的所有匹配记录。我认为承诺可能是一种方式,但是,它们似乎不允许将参数传递给它们 export function exportPart(event) { // Calls a function that p

我在for循环中使用wixData.query()获得的记录要么没有添加到数组中,要么(我认为更可能的是)在将记录分配到数组之前执行我的console.log()

在执行for循环之前,我从主列表中获取我想要的所有记录的记录ID。一旦它们都找到了,就会调用一个函数来查找另外两个数据库中的所有匹配记录。我认为承诺可能是一种方式,但是,它们似乎不允许将参数传递给它们

export function exportPart(event) {

    // Calls a function that performs all necessary actions. This needs to be done once for three different
    // databases so to simplify it, a function call is made passing in the string for the database desired.

    wixData.query("master_participant_data")
        .eq("cs_data", true)
        .eq("permission_granted", true)
        .eq("maze_map_completed", true)
        .eq("submitted", false)
        .find()
        .then((records) => {
            if (records.items.length > 0) {
                let numOfRecords = records.items.length
                var customer_ids = []
                for (var i = 0; i < numOfRecords; i++) {
                    customer_ids.push(records.items[i]._id)
                }
                processBatch("Student_Data", customer_ids)
                processBatch("7Cs_Data", customer_ids)
            }
        })
}

// Will process records and make api requests
export function processBatch(collection, recordIDs) {
    var status = "Beginning Export...\nGrabbing new records...\n"
    $w('#exportStatus').value = status

    var records = []

    for (var i = 0; i < recordIDs.length; i++) {
        wixData.query(collection)
            .eq("customer_id", recordIDs[i])
            .find()
            .then((result) => {
                records.push(result.items[0])
                console.log("These are the results of query: " + JSON.stringify(result.items[0]))
            })
    }
    console.log("Located records: " + records)
}
导出函数exportPart(事件){
//调用执行所有必要操作的函数。这需要为三个不同的
//数据库,因此为了简化它,函数调用传递所需数据库的字符串。
wixData.query(“主参与者数据”)
.eq(“cs_数据”,真)
.eq(“授予的许可”,真)
.eq(“迷宫地图完成”,真)
.eq(“已提交”,错误)
.find()
。然后((记录)=>{
如果(records.items.length>0){
设numOfRecords=records.items.length
var客户_id=[]
对于(var i=0;i{
records.push(结果项[0])
log(“这些是查询的结果:”+JSON.stringify(result.items[0]))
})
}
console.log(“定位记录:”+记录)
}

我要寻找的是一个类似于承诺的东西,我可以在运行任何代码之前执行该承诺,以确保for循环完全执行(在其他地方获取所有匹配的记录),这样console.log(“定位记录:+记录”)将显示记录,而不是空记录。

好吧,从外观上看,您有一个承诺。。。或者至少是一个有能力的。。。所以,一半的问题已经解决了-另一半。。。哇!谢谢我想我只是不知道如何正确使用aka await/async和map()。