Это то, что вы ищете?
Причина, по которой у вас возникают проблемы, заключается в том, что возвращаемое значение - promise
, которого пока нет, пока обещание не разрешится. Чтобы обойти это, нужно установить значение в функции, которую вы вызываете при успешном выполнении обещания .then( res => { theFunctionToSetValue(res) });
Затем вы устанавливаете переменную / inner HTML с помощью функции, которая вызывается при успехе.
С помощью код, который я предоставил, вы бы назвали decipher внутри из setOutput()
document.addEventListener("DOMContentLoaded", function() {
const uploadBtn = document.getElementById("upload");
const output = document.getElementById("output");
var outputText;
function setOutput(response) {
outputText = response;
output.innerHTML = outputText;
};
uploadBtn.addEventListener("change", function() {
var fr = new FileReader();
fr.onload = function() {
uploadBtn.textContent = fr.result;
}
outputText = uploadBtn.files[0].text().then( res => { setOutput(res) });
});
});
<input type="file" id="upload">
<div id="output"></div>