sssssss_m 2025-01-11 18:00 采纳率: 0%
浏览 6

js 代码如何按顺序等待执行?

下面代码如何等,console.log(1)走完,console.log(2)走完,再走console.log(3)?
这个代码实现了马?


export const forInsterData = async (list, table, handle, fileKey, wj) => {
    try {
        let user = useCounterStore()
        if(list.length==0){
            user.count +=1;
            user.countText = `基础配置:${table}表`;
        }
        for(let i =0;i<list.length;i++) {
            let obj = list[i];
            let strData = Object.keys(obj).map(key => obj[key]?`'${obj[key].length > 0 ?obj[key].replace(/\'/g, '"'):obj[key]}'`:`${null}`);
            let strKey = Object.keys(obj).map(key => key).join(",");
            // 判断数据大小
            let isKB = isStringKB(obj[fileKey], 2048);
            if(!isKB) {
                let fullPath = await createFile(`fxzb${Math.random().toString(36).substr(2,9)}`, obj[fileKey]);
                if(fullPath) {
                    let index = strData.findIndex(el => el.indexOf(obj[fileKey]) !==-1);
                    strData[index] = `'${fullPath}'`;
                    console.log(1)
                }
            }
            // 判断是否有文件需要下载
            if(wj && obj[wj] && obj[wj].indexOf('http') !==-1) {
                t = 2
                let resDown = await localDown(obj, wj, table, handle)
                if(resDown) {
                     let index = strData.findIndex(el => el.indexOf(obj[wj]) !==-1);
                     strData[index] = `'${resDown.join(',')}'`;
                     console.log(2)
                }
            }
            console.log(3)
            let setDataJson = strData.join(",");
            await addTableData(table, `${strKey}`,`${setDataJson}`);
            if(list.length -1 == i){
                user.count +=1;
                user.countText = `基础配置:${table}表`;
                console.log(user.count, 'console.log(user.count)')
                if(user.count == 21) uni.hideLoading()
            }
        }
  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-01-11 18:01
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    根据提供的代码,可以看出这段代码实现了一些异步操作,包括判断数据大小、创建文件、下载文件等。其中,console.log(1)和console.log(2)分别在特定条件下被调用,而console.log(3)则在每次循环迭代结束后被调用。 具体执行流程如下:
    1. 如果list的长度为0,则执行user.count加1的操作,并设置user.countText为基础配置:xxx表。
    2. 遍历list中的每个元素,对obj进行处理,判断数据大小并做相应处理,判断是否有文件需要下载并下载文件。
    3. 在每次循环结束后,打印出console.log(3),然后将处理后的数据加入表格中。
    4. 如果是list中最后一个元素,则再次执行user.count加1的操作,并查看user.count是否等于21,如果等于则隐藏loading。 以下为示例代码片段,演示了应该如何调用这个异步函数:
    const list = [{key1: 'value1'}, {key2: 'value2'}];
    const table = 'example_table';
    const handle = 'example_handle';
    const fileKey = 'example_fileKey';
    const wj = 'example_wj';
    forInsterData(list, table, handle, fileKey, wj).then(() => {
        console.log("All console logs completed");
    }).catch(err => {
        console.error("An error occurred:", err);
    });
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月11日