使用承诺 jQuery
Working with promises jQuery
我必须存储一些图像,我正在使用这样的值:
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
任务,我搜索我需要做一个承诺returns y存储它的价值,但我不明白 promise 是如何工作的。
有人可以向我解释如何将此代码执行到承诺中并存储结果 (e.target.result
) 吗?
感谢大家的帮助。
I need to do a promises that returns my value to store it
Promise 没有 return 值,它们 "contain" 它们 - Promise 是一个包装器,代表一个异步值,一个指向未来的指针。
but I don't understand how promise works
在将它们应用到您的代码之前,您绝对应该这样做。你会找到一些好的资源 here or at https://www.promisejs.org/.
how can I execute this code into a promise and store the result?
看看 How do I convert an existing callback API to promises? for the generic approach. For jQuery, you will construct a Deferred
object 你可以稍后解决,并且可以立即从中获得未来价值的承诺。
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
});
但请注意,依赖于此值的所有内容都是异步的,现在应该成为一个 promise-returning 函数。
我必须存储一些图像,我正在使用这样的值:
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
任务,我搜索我需要做一个承诺returns y存储它的价值,但我不明白 promise 是如何工作的。
有人可以向我解释如何将此代码执行到承诺中并存储结果 (e.target.result
) 吗?
感谢大家的帮助。
I need to do a promises that returns my value to store it
Promise 没有 return 值,它们 "contain" 它们 - Promise 是一个包装器,代表一个异步值,一个指向未来的指针。
but I don't understand how promise works
在将它们应用到您的代码之前,您绝对应该这样做。你会找到一些好的资源 here or at https://www.promisejs.org/.
how can I execute this code into a promise and store the result?
看看 How do I convert an existing callback API to promises? for the generic approach. For jQuery, you will construct a Deferred
object 你可以稍后解决,并且可以立即从中获得未来价值的承诺。
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
});
但请注意,依赖于此值的所有内容都是异步的,现在应该成为一个 promise-returning 函数。