Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery_Javascript_Jquery_Arrays_Promise_Filereader - Fatal编程技术网

Javascript 使用jQuery

Javascript 使用jQuery,javascript,jquery,arrays,promise,filereader,Javascript,Jquery,Arrays,Promise,Filereader,我必须存储一些图像,我的取值如下: var imgGaleria1 = $("#imgGaleria1")[0].files[0]; var imgGaleria1Blob; if (imgGaleria1) { var reader = new FileReader(); reader.onload = function (e) { reader.readAsDataURL(imgGaleria1); imgGaleria1Blob = e.t

我必须存储一些图像,我的取值如下:

var imgGaleria1 = $("#imgGaleria1")[0].files[0];
var imgGaleria1Blob;

if (imgGaleria1) {
    var reader = new FileReader();
    reader.onload = function (e) {
        reader.readAsDataURL(imgGaleria1);
        imgGaleria1Blob = e.target.result;
    };
}
但很明显,我不能存储到
imgGaleria1Blob
,因为reader只是
async
任务,我搜索到我需要做一个承诺,返回y值来存储它,但我不明白承诺是如何工作的

有人能向我解释一下,我如何将这段代码执行成承诺并存储结果(
e.target.result

谢谢你们的帮助

我需要做一个承诺,返回我的价值来存储它

承诺不返回值,它们“包含”它们——承诺是表示异步值的包装器,是指向未来的指针

但我不明白承诺是怎么起作用的

在将它们应用于代码之前,您肯定应该这样做。你会发现一些好的资源或在

如何将此代码执行为承诺并存储结果

请看一看通用方法。对于jQuery,您将构造一个稍后可以解析的值,并且可以立即从中获得未来值的承诺

var dfd = $.Deferred();
var reader = new FileReader();
reader.onload = function(e) {
    dfd.resolve(e.target.result);
};
reader.readAsDataURL(imgGaleria1);

promiseForImgGaleria1Blob = dfd.promise();
稍后,您将能够通过

promiseForImgGaleria1Blob.then(function(imgGaleria1Blob) {
    // use the blob here
});

但是请注意,依赖于此值的所有内容都是异步的,现在应该成为一个承诺返回函数。

您可以使用回调,但您已经有了一个回调,即对onload事件处理程序的回调。使用承诺并不能真正帮助您在加载之前访问内容,它只是让您更容易将内容移出回调,并且仍然等待事件发生。哇,谢谢大家,这对我很有效,您帮助我了解了更多承诺的工作原理。。我会更加关注他们的工作方式。