Есть цепочка промисов
, первый берет id
пользователей из БД
, потом по нему нужно достать его группы, и имена конструкторов. И это все может быть в нескольких экземплярах. Как следствие - циклы в циклах. В конечном счете получаю объект только одного пользователя
async(takeIds()
.then(ids => {
// console.log("ids", ids);
for (var i = 0; i < ids.length; i++) {
data.id = ids[i];
await (takeIdvk(ids[i])
.then(idm => {
data.idvk = idm;
takeIdg(data.id)
.then(res => {
takeNamesCycle(res, data)
.then(data => {
console.log("data", data);
})
.catch(err => {
console.log(err);
});
})
.catch(err => {
console.log(err);
});
})
.catch(err => {
console.log(err);
}));
}
})
.catch(function(err) {
console.log(err);
}));
И функция takeNamesCycle
, так как она отличается от остальных (в остальных простые запросы к БД
):
var takeNamesCycle = async(function(arr, obj) {
return new Promise((resolve, reject) => {
for (var i = 0; i < arr.length; i++) {
var idg = arr[i];
await (takeNames(arr[i])
.then(names => {
obj.idg[idg] = names;
})
.catch(err => {
console.log(err);
}));
}
resolve(obj);
});
});
Может, можно как-то упростить это все? Буду очень благодарен
Возможно я что-то не то предлагаю, но я бы переписал код вот так (обернув в async
функцию main
):
async function main() {
let ids = await takeIds();
for (let id of ids) {
data.id = id;
let idm = await takeIdvk(id);
data.idvk = idm;
let res = await takeIdg(id);
let data = takeNamesCycle(res, data);
console.log('data', data);
}
}
Это в предположении, что у вас существуют следующие функции:
async function takeIds() { ... }
async function takeIdvk() { ... }
async function takeIdg() { ... }
Вот вариант с «обработкой» ошибок — оборачиваем весь код вот так:
try {
// код
} catch (e) {
console.log(e);
}
В вашем случае:
async function main() {
try {
let ids = await takeIds();
for (let id of ids) {
data.id = id;
let idm = await takeIdvk(id);
data.idvk = idm;
let res = await takeIdg(id);
let data = takeNamesCycle(res, data);
console.log('data', data);
}
} catch (e) {
console.log(e);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Сделал прокрутку с мышкой налево и направоНо чуть не правильно
Нужно в #30 вставить видео (Смотреть Картинку ниже по ссылку) Чтобы в этой цифре с решеткой показывалось видео)))
ПриветЗнакомлюсь с google maps api и возник такой вопрос
Здравствуйте, Есть две структуры данных, пытаюсь разобрать, какой вид быстрее будет парситься на клиенте: