Я предлагаю изменить data1Listener
& data2Listener
функции следующим образом:
async data1Listener() {
try {
data1Storage = await JSON.parse(this.responseText);
console.log('Finished putting into data1Storage');
} catch (e) {
throw new Error(e);
}
}
async data2Listener() {
try {
data2Storage = await JSON.parse(this.responseText);
console.log('Finished putting into data2Storage');
} catch (e) {
throw new Error(e);
}
}
Ключевое слово async
перед функцией позволяет вам await
внутри нее.
Ключевое слово await
, как следует из его названия, будет ждать завершения текущего оператора, прежде чем перейти к следующей строке.
В этих функциях await
появляется передJSON.parse(this.responseText)
.
Таким образом, только один раз this.responseText
будет полностью проанализирован и содержится в переменных data1Storage
& data2Storage
, будут выполняться строки console.log
.
Если произошла ошибкапроисходит в любое время внутри блока try
, ошибка будет выдана блоком catch
.(Например, если this.responseText
является недопустимым JSON и не может быть проанализирован, то console.log
не будет работать и вместо этого будет напечатана ошибка.