This question is the same, but the answers didn't work.
Attempting to await a function inside an async static function generates this error: Uncaught SyntaxError: await is only valid in async function
.
Both functions are static. Why doesn't this work?
static async getImageDataFromFile(file) {
// Create promise.
let promise = $.Deferred();
// Create reader.
let reader = new FileReader();
// Process image.
reader.onload = function(e) {
// Get data URL for image.
let dataUrl = reader.result;
// Get image data.
let imageData = await this.getImageDataFromDataUrl(dataUrl);
promise.resolve(imageData);
}
// Read image from hard disk.
reader.readAsDataURL(file);
// Return promise.
return promise;
}
static getImageDataFromDataUrl(dataUrl) {
// Create promise.
let promise = $.Deferred();
// Create new image object.
let image = new Image();
// Read image properties when loaded.
image.onload = function() {
// Wrap data in object.
let data = {
image: image,
width: image.naturalWidth,
height: image.naturalHeight,
}
// Resolve promise.
promise.resolve(data);
}
// Start loading image.
image.src = dataUrl;
}