Size: a a a

JavaScript — русскоговорящее сообщество

2021 March 19

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
System404
https://pastebin.com/LGEukvDU что то вроде вот, но я ничего не проверял.
=== *
я как раз так и пробовал. Изменяется ток в 1 итерации, потом все время одинаково
источник

S

System404 in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
я как раз так и пробовал. Изменяется ток в 1 итерации, потом все время одинаково
Если ты про уровень рекурсии, то во время итерации ничего и не должно изменяться
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
System404
Если ты про уровень рекурсии, то во время итерации ничего и не должно изменяться
почему? и как определить уровень рекурсии? или он не опускается
источник

АШ

Амир Шодмонов... in JavaScript — русскоговорящее сообщество
источник

A

Alexander in JavaScript — русскоговорящее сообщество
System404
Тем не менее, зачем ты все это заменяешь, если не используешь результат?
Используется на backend'e, чтобы обработать правильно формы
источник

S

System404 in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
почему? и как определить уровень рекурсии? или он не опускается
Уровень рекурсии - количество таких же функций в call stack'е. От того, что на ты несколько раз подряд вызовешь эту функцию на одном уровне, уровень не меняется
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
System404
Уровень рекурсии - количество таких же функций в call stack'е. От того, что на ты несколько раз подряд вызовешь эту функцию на одном уровне, уровень не меняется
нет времени немного подсказать, как использовать Promise в данной конкретной функции?)
источник

IS

Ivan Savin in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
Переслано от Dec 428725948782869492
async function fetchRecursive(base_url, arr) {
 const result = [];
 if (Array.isArray(arr))
   for (const n of arr) {
     if (n.children) {
       let ch_arr;
       try {
         result.push({
           id: n.id,
           externalId: n.externalId,
           text: n.text,
           children: await fetch(base_url + n.id).then((r) => {
             ch_arr = { ...r };
             return r.json();
           }),
           productCount: n.productCount,
         });
       } catch (error) {
         result.push({ id: n.id, error });
       }
       result.push(...(await fetchRecursive(base_url, ch_arr)));
     } else {
       result.push(n);
     }
   }
 return result;
}

данные такого вида
{id: 13661, externalId: "КЗ000000000000002853", text: "J-Y (ST) Y", children: false, productCount: 3}
это же будет огромное количество запросов, да ещё и на бэке, подозреваю, будет куча запросов в бд. не надо так
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
Ivan Savin
это же будет огромное количество запросов, да ещё и на бэке, подозреваю, будет куча запросов в бд. не надо так
И какой выход?)
источник

IS

Ivan Savin in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
И какой выход?)
формировать дерево на бэке
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
это запрос к b2b
источник

IS

Ivan Savin in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
это запрос к b2b
понял, окей.
а у них нет чего-то более рационального?
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
Ivan Savin
понял, окей.
а у них нет чего-то более рационального?
смотри, как там сделано
[ {
       "id": 1193,
       "externalId": "КЗ000000000000002764",
       "text": "Изделия для монтажа и опрессовки кабеля",
       "children": true,
       "productCount": 20025
   },
   {
       "id": 79192,
       "externalId": "КЗ000000000000003737",
       "text": "Измерительное оборудование",
       "children": true,
       "productCount": 1559
   },
   {
       "id": 260275,
       "externalId": "ШП8-2к00000000231004",
       "text": "Инструменты и средства защиты",
       "children": true,
       "productCount": 21224
   },
]

И если children: true, то подставляешь в api его id, и то же самое. А заказчик хочет, чтоб я это все деревом отображал, в менюшке
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
мб конечно как то и адекватнее можно сделать, но я не придумал)
источник

IS

Ivan Savin in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
смотри, как там сделано
[ {
       "id": 1193,
       "externalId": "КЗ000000000000002764",
       "text": "Изделия для монтажа и опрессовки кабеля",
       "children": true,
       "productCount": 20025
   },
   {
       "id": 79192,
       "externalId": "КЗ000000000000003737",
       "text": "Измерительное оборудование",
       "children": true,
       "productCount": 1559
   },
   {
       "id": 260275,
       "externalId": "ШП8-2к00000000231004",
       "text": "Инструменты и средства защиты",
       "children": true,
       "productCount": 21224
   },
]

И если children: true, то подставляешь в api его id, и то же самое. А заказчик хочет, чтоб я это все деревом отображал, в менюшке
так дерево же изначально наверняка скрыто будет, нет?
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
1й уровеь открыт сразу
источник

IS

Ivan Savin in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
мб конечно как то и адекватнее можно сделать, но я не придумал)
ну, в общем, если не СЕО и не нужно всё сразу, то можно грузить по мере необходимости хотя бы
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
остальное скрыто, да. Типо подгружать каждую вкладку по мере нажатия?
источник

IS

Ivan Savin in JavaScript — русскоговорящее сообщество
Dec 428725948782869492
1й уровеь открыт сразу
ну или можно с опережением на один уровень
источник

D4

Dec 4287259487828694... in JavaScript — русскоговорящее сообщество
ну я вот хотел в функцию эту вставить что то типа ограничителя, чтоб например на 3м уровне вышел из рекурсии
источник