Я пишу код, который итерации сначала через массив, а затем итерации через массив, содержащийся в исходном массиве.Лучший шаблон для доступа к вложенным данным в Javascript
Я заканчиваю этот странный образец, который я повторяю, и я уверен, что он не оптимизирован. Итерируя через последний элемент массива rssFeeds, он изменяет значение «triggerCallback» на true. Позже, повторяя массив элементов, условная проверка, если оба triggerCallback истинны, и массив элементов выполняет итерацию через свой последний элемент, после чего он вызывает обратный вызов, который будет использоваться в шаблоне водопада async.js.
function countSuccessPosts(rssFeeds, cb){
var successCounter = 0;
var triggerCallback = ''
rssFeeds.forEach(function(feed, index, array){
if(index == array.length - 1){
triggerCallback = 'true'
}
feed.itemsToPost.forEach(function(item, itemIndex, itemArray){
if(item.response.id){
++successCounter
}
if(itemIndex == itemArray.length - 1 && triggerCallback == 'true'){
cb(null, rssFeeds, successCounter)
}
})
})
}
Что является более оптимальным способом структурирования этого шаблона?
Структура данных: RssFeeds будет содержать до 5 различных элементов. ЭлементыToPost.
[
{
"_id": "55808127b8f552c8157f74a7",
"name": "",
"imageUrl": "",
"url": "http://www.taxheaven.gr/bibliothiki/soft/xml/soft_law.xml",
"latestDate": "1434056400000",
"endpoints": [
{
"_id": "554f9319bc479deb1757bd2e",
"name": "Wise Individ",
"id": 26413291125,
"type": "Group",
"__v": 0
}
],
"__v": 1,
"itemsToPost": [
{
"title": "Aριθμ.: Υ194/12.6.2015 Τροποποίηση απόφασης ανάθεσης αρμοδιοτήτων στον Αναπληρωτή Υπουργό Οικονομικών Δημήτριο Μάρδα.",
"summary": "Τροποποίηση απόφασης ανάθεσης αρμοδιοτήτων στον Αναπληρωτή Υπουργό Οικονομικών Δημήτριο Μάρδα.",
"url": "http://www.taxheaven.gr/laws/circular/view/id/21113",
"published_at": 1434056400000,
"time_ago": "5 days ago",
"guid": {
"link": "http://www.taxheaven.gr/laws/circular/view/id/21113",
"isPermaLink": "true"
}
}
]
},
{
"_id": "558093013106203517f96d9c",
"name": "",
"imageUrl": "",
"url": "http://www.taxheaven.gr/bibliothiki/soft/xml/soft_new.xml",
"latestDate": "14344896",
"endpoints": [],
"__v": 0,
"itemsToPost": [
{
"title": "Taxheaven - Άμεση ενημέρωση - Έγκαιρη επιστημονική κωδικοποίηση - Καινοτομικά εργαλεία. Κωδικοποιήθηκαν όλοι οι νόμοι στους οποίους επιφέρει αλλαγές ο νόμος 4330/2015",
"summary": {},
"url": "http://www.taxheaven.gr/news/news/view/id/24088",
"published_at": 1434494400000,
"time_ago": "about 4 hours ago",
"guid": {
"link": "http://www.taxheaven.gr/news/news/view/id/24088",
"isPermaLink": "true"
}
}
]
}
]
Я использую async в настоящий момент для картины водопада. Вы знаете, какой метод примерно охватывает эту функциональность? Мне просто нужно погрузиться и посмотреть, что я могу найти – Antoine
Подождите .. это не асинхронные циклы? Это нелепо. Вы должны включить '.forEach'' в циклы for, чтобы вы могли выйти из функции, как только вы вызываете обратный вызов. –
@PatrickRoberts Я не уверен, что библиотека относится к этой ситуации. Похоже, он синхронно свертывается в вложенные данные.Просто его функция countSuccessPosts называется асинхронно. По крайней мере, так я читаю. Это помогло бы, если бы у нас были образцы данных. –