为什么我的重定向不起作用?

时间:2017-08-29 09:26:47

标签: javascript salesforce

我的脚本将我的重定向功能调用到尽早,因此批量上传的最后一个文件失败。我整个上午一直在寻找尝试过不同的方法,但没有成功。

function uploadFile(something, callback) {



    var fileInput = $('#fileList1');
    //var reader = new FileReader();
    console.log(fileInput);
    if ( trim( fileInput.val() ).length == 0 ) {
        return;
    }
    var fileList = []; 
    count = fileInput[0].files.length; 
    for(i = 0; i < count; i++){

        loadFile(fileInput[0].files[i]);

    }

    function loadFile(file){

        var reader = new FileReader(); 
        var fileName = getFileNameWithExtension( file);
        var file = file;
        while(reader.onprogress){
            console.log("reading");    
        }

        reader.onload = function(event) {
            var val = reader.result; 
            var text = val.split(',')[1];
            saveFile( fileName, text, parentId );
            if (!--count){
                redirect();                    
            }

        }

        reader.onerror = function(event) {
            console.error("File could not be read! Code " + reader.error.message);
        }
        reader.readAsDataURL(file);

    }

}
function redirect(){

    window.location.href = '/{!tempID}';
    return false;
}

有人能给我一个暗示吗?

您好,我已根据您的建议重新编写了我的方法。但重定向仍然在早期调用,...在所有上传完成之前。

function uploadFile() {


    var fileInput = $('#fileList1');

    console.log(fileInput);
    if ( trim( fileInput.val() ).length == 0 ) {
        return;
    }
    var countTwo = 0; 
    count = fileInput[0].files.length; 
    for(var i = 0; i < count; i++){

        loadFile(fileInput[0].files[i], function(val){
            console.log(val);
            if(val === 3){
                setTimeout(()=>{redirect();}, 5000);
            }

        });
    }

    function loadFile(file, callback){

        var reader = new FileReader(); 
        var fileName = getFileNameWithExtension( file);
        var file = file;
        while(reader.onprogress){
            console.log("reading");    
        }

        reader.onload = function(event) {
            var val = reader.result; 
            var text = val.split(',')[1];
            saveFile( fileName, text, parentId );
            console.log(" ct " + countTwo + " c " + count-1);
            countTwo++;

            if(!--count) callback(countTwo);

        }

        reader.onerror = function(event) {
            console.error("File could not be read! Code " + reader.error.message);
        }
        reader.readAsDataURL(file);

    }

}

2 个答案:

答案 0 :(得分:0)

方法1 :(推荐)

检测上传何时结束。在该回调中,请调用重定向。

方法2:

// define your TIMEOUT first
setTimeout(()=>{redirect();}, TIMEOUT);

答案 1 :(得分:0)

reader.onload = function(event) {
            var val = reader.result; 
            var text = val.split(',')[1];
            saveFile( fileName, text, parentId );
            if (!--count){
                setTimeout(()=>{redirect();}, 0);                    
            }

        }