Здравствуйте. Есть объект workspace и входной JSON. Необходимо отформатировать и/или получить данные и записать их в этот workspace. Использую цикл для перебора элементов JSON, при этом значения уже существующие, такие как текст, например, попадают в workspace, а данные, которые нужно ждать (получить курс валют например), приходят после выполнения цикла. Для последних использую промисы, но все равно, они приходят после. Помогите разобраться. Ниже код:
var checkJson = function(json) {
return new Promise((resolve, reject) => {
var workspace = {};
for (var i = 0; i < json.length; i++) {
var id = json[i].id.match(/\D+/)[0];
switch (id) {
case 'background':
workspace['background'] = {};
workspace['background'] = createBackground(json[i], workspace['background']);
break;
case 'text':
if (countert == 0) {
workspace['text'] = {}
}
workspace['text'] = createText(json[i], workspace['text']);
countert++;
break;
case 'time':
if (countertime == 0) {
workspace['time'] = {}
}
createTime(json[i], workspace['time'])
.then(res => {
workspace['time'] = res;
countertime++;
});
break;
case 'currencycourse':
if (counterCourse == 0) {
workspace['currencycourse'] = {}
}
createCurrensyCourse(json[i], workspace['currencycourse'])
.then(res => {
workspace['currencycourse'] = res;
counterCourse++;
})
.catch(err => {
console.log(err);
});
break;
// default:
// console.log(itm_id);
// break;
}
}
Promise.all([workspace])
.then(values => {
// console.log("values", values);
resolve(values);
});
});
};
Проблема именно с курсом валют, последний resolve выкидывает заполненный workspace, только currencycourse = {}
Кажется так:
async function checkJson(json): Promise<any> {
const workspace = {
background: {},
text: {},
time: {},
currencyCourse: {}
};
for (const jsonNode of json.length) {
const id = jsonNode.id.match(/\D+/)[0];
switch (id) {
case 'background':
workspace.background = createBackground(json[i], workspace.background);
break;
case 'text':
workspace.text = createText(json[i], workspace.text);
break;
case 'time':
workspace.time = await createTime(json[i], workspace['time']);
break;
case 'currencycourse':
workspace.currencyCourse = await createCurrensyCourse(json[i], workspace.currencyCourse)
break;
default:
console.log('default');
}
}
return workspace;
};
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть объекты на сцене, при на ведении на один из объектов хочу отобразить так сказать "меню", а точнее кнопку на подложке, при нажатии на нее...
Как можно реализовать замену атрибута type с password на text и обратно у input по наведению на элемент
Попалось такое задание, не понимаю как с точки зрения синтаксиса это должно выглядеть в html и js файлахНиже привожу текст задания и то, как...