帖子
帖子
用户
博客
课程
显示全部楼层
3
帖子
0
勋章
24
Y币

[云开发] 内容返回与结果不一致,前面alert的是正确的,return就有问题

[复制链接]
发表于 2022-7-14 16:08:30
function storage_conditionparameters(ConditionParameters,a){
    if(!ConditionParameters){
        return
    }
    if(ConditionParameters['sheet']){
        if(a==0){
            ConditionParameters["idcode"]=[]
        }
        storage_getidcode(DBname,ConditionParameters['sheet'][a],(ret)=>{
            ret={
                "lastcode":3,
                "仓库":{
                    "code":'A',
                    "codetype":"text",
                    "index":{
                        "广东":1,
                        "长沙":2
                    },
                    "lastcode":2
                },
                "货主":{
                    "code":'B',
                    "codetype":"text",
                    "index":{
                        "品飞":1,
                        "日彩":2
                    },
                    "lastcode":2
                },
                "数量":{
                    "code":'C',
                    "codetype":"num",
                    "index":{
                        "1":1,
                        "10":2
                    },
                    "lastcode":2
                }
            }
            ConditionParameters["idcode"].push(ret)
            if(a==ConditionParameters['sheet'].length-1){
                if(ConditionParameters['condition']){
                    let condition=ConditionParameters['condition'];
                    let idcode;
                    let result;
                    let id=[];
                    let check;
                    for(let i=0;i<ConditionParameters["idcode"].length;i++){
                        idcode=ConditionParameters["idcode"][i];
                        result={};
                        for(let j in idcode){
                            if(!(j=="lastcode")){
                                result[idcode[j]['code']]=[];
                                if(j in condition){
                                    if(condition[j]['type']=='text'){
                                        for(let k=0;k<condition[j]['msg'].length;k++){
                                            if(idcode[j]['index'][condition[j]['msg'][k]]){
                                                result[idcode[j]['code']].push(idcode[j]['index'][condition[j]['msg'][k]]);
                                            };
                                        };
                                    }else if(condition[j]['type']=='num'){
                                        for(let k in idcode[j]['index']){
                                            if(Number(k)>=condition[j]['msg'][0]&&Number(k)<=condition[j]['msg'][1]){
                                                result[idcode[j]['code']].push(idcode[j]['index'][k]);
                                            };
                                        };
                                    }else if(condition[j]['type']=='date'){
                                        for(let k in idcode[j]['index']){
                                            if(datechange(k)>=datechange(condition[j]['msg'][0])&&datechange(k)<=datechange(condition[j]['msg'][1])+1){
                                                result[idcode[j]['code']].push(idcode[j]['index'][condition[j]['msg'][k]]);
                                            };
                                        };
                                    };
                                }else{
                                    for(let k in idcode[j]['index']){
                                        result[idcode[j]['code']].push(idcode[j]['index'][k]);
                                    };
                                };
                            };
                        };
                        alert(JSON.stringify(result))
                        check="Y";
                        for(let j in result){
                            if(result[j].length==0){
                                check="N";
                                break;
                            };
                        };
                        if(check=="N"){
                            id.push([]);
                        }else{
                            let l=1
                            let zancun
                            let ret=[]
                            for(let j in result){
                                zancun=[]
                                for(let k=0;k<result[j].length;k++){
                                    let text=""
                                    text+=j+result[j][k]
                                    zancun.push(text)
                                }
                                if(l==1){
                                    ret=zancun
                                }else{
                                    ret=data_MergeChar(ret,zancun)
                                }
                                l=l+1
                            }
                            id.push(ret)
                        }
                    }
                    ConditionParameters["id"]=id
                }
                alert(JSON.stringify(ConditionParameters))
                return ConditionParameters
            }else{
                a=a+1
                return storage_conditionparameters(ConditionParameters,a)
            }
        })
    }else{
        alert("未选择表格")
        return ConditionParameters
    }
}


170342d9916ec58a41154ba822ab69f.png
380
帖子
4
勋章
6
Y币
https://**.**/blogs-details/202204160527365323

回调函数中不能使用return

异步函数中不能使用for 循环
描述的详细点,
380
帖子
4
勋章
6
Y币
用变量保存试试
3
帖子
0
勋章
24
Y币
好像也不行,还是返回一个undefined
3
帖子
0
勋章
24
Y币
function storage_getidcode(DBname,sheetname,callback){
    let a=1
    callback a
}
function data_MergeChar(arr1,arr2){
    if(arr1=='null'||!arr1){
        return arr2;
    }else if(arr2=='null'||!arr2){
        return arr1;
    }else{
        let save=[];
        for(let i=0;i<arr1.length;i++){
            for(let j=0;j<arr2.length;j++){
                id="";
                id+=arr1+arr2[j];
                save.push(id);
            };
        };
        return save;
    };
}
DBname="坑货"
ConditionParameters={
    'id':[],
    'sheet':['sheet1'],
    'idcode':[],
    'condition':{
        '货主':{'type':'text','msg':['品飞','日彩']},
        '数量':{'type':'num','msg':[1,5]}
    }
}
这些应该是其中全部执行的代码跟参数,最后执行的storage_conditionparameters(ConditionParameters,0)
3
帖子
0
勋章
24
Y币
主要是第二个alert都出结果了,ruturn不应该返回不了才对啊
您需要登录后才可以回帖 登录

本版积分规则