Не срабатывает await
Бек на Django, а фронт на чистом JS/HTML/CSS. Ничего, кроме font awesome не используется.
Для тестов перезапускую полностью сервер и делаю Ctrl+Shift+R что бы сбросить кеш статических файлов.
Есть вот такой код метода init
init() {
document.addEventListener("DOMContentLoaded", async (event) => {
console.log(`UserOffice init`);
this.profile = await base.getProfile();
console.log(`UserOfficeProfile is ${this.profile}`);
...
});
}
Код метода getProfile
async getProfile() {
const profile = await this.getXHRasync(`${window.location.origin}/api/get_profile/`)[0];
console.log(`getProfile got ${profile}`)
return profile;
}
И код метода getXHRasync
getXHRasync(path) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', path, true);
xhr.onload = function () {
console.log(`GET XHR 2, path is ${path}, and response ${xhr.responseText}`);
resolve(JSON.parse(xhr.responseText));
};
xhr.send();
});
}
Я не спец в JS, просто нужно было провести рефактор. Насколько я понял await должен подождать значение и только потом продолжить выполнение кода.
Но на выхлопе получаю.
Вроде везде async/await проставил, может, я чего-то не знаю, поправьте
Ответы (1 шт):
Автор решения: Dimabytes
→ Ссылка
Попробуй в коде getProfile сначала дождаться выполнения async, а потом брать что то по индексу, а то получается, что ты берешь значение по индексу от промиса.
async getProfile() {
const profile = (await this.getXHRasync(`${window.location.origin}/api/get_profile/`))[0];
console.log(`getProfile got ${profile}`)
return profile;
}
