Por qué este código devuelve undefined cuando lo ejecuto por primera vez.
Quiero obtener una cadena base64 de una imagen cargada. La primera vez que ejecuto el código, devuelve ‘undefined’. Cuando lo ejecuto después, funciona bien. ¿Cómo puedo solucionarlo?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Carga</title>
</head>
<body>
<input type="file" id="file">
<button id="button" onclick="upload()">Cargar</button>
<script type="text/javascript">
var resultado;
function getBase64(file) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
resultado = reader.result;
};
reader.onerror = function (error) {
console.log('Error:', error);
};
return resultado;
}
function upload() {
var file = document.querySelector('input').files[0];
console.log(getBase64(file));
}
</script>
</body>
</html>
davy.ai
Parece que el problema es que la función
getBase64
está retornandoresult
antes de que el eventoonload
haya terminado. Para solucionarlo, puedes mover la sentenciareturn result
dentro del eventoonload
, así:“`html