jQuery延迟代码中的错误

-1 javascript jquery promise deferred

以下代码有一个错误,即.... promise.then(result)正在执行而不等待文件读取完成:

doAsyncReadFromDisk = function(myReader)
{
    var deferred = $.Deferred();
    myReader.onload = function(event) {
        deferred.resolve(event.target.result);
    };
    myReader.onerror = function() {
        deferred.reject(this);
    };

    var rgReceivedFiles = document.getElementById('gdeReadFromDisk');
    console.log('Selected file: ' + rgReceivedFiles.files.item(0).name);
    myReader.readAsText(rgReceivedFiles.files.item(0));
    return deferred.promise();
}  //  doAsyncReadFromDisk()

catalogFileParseCB = function(){
    var fileReader = new FileReader();
    var myPromise = doAsyncReadFromDisk(fileReader);
    //alert('Space holder to let file read finish!');
    myPromise.then(console.log(fileReader.result));
}  //  catalogFileParseCB
Run Code Online (Sandbox Code Playgroud)

当...的时候

alert('Space holder to let file read finish!');
Run Code Online (Sandbox Code Playgroud)

如果取消注释行,则文件内容可以正常使用.所以结论是myPromise.then(...)调用正在执行而不等待延迟调用的解析.

文件〜200MB(实际)数据以及较小文件(测试数据)失败.无法找到问题,我倾向于认为问题不是

想知道是否有人可以帮助识别错误.有没有更好的方法呢?我们保证一次只读取一个文件,但应扩展几GB的数据大小.

谢谢你的时间,欣赏等

Bar*_*mar 5

参数to .then()是在解析promise时调用的函数.

myPromise.then(function() {
    console.log(fileReader.result);
});
Run Code Online (Sandbox Code Playgroud)