Size: a a a

Node.js — русскоговорящее сообщество

2020 February 03

Ð

Ð in Node.js — русскоговорящее сообщество
Alex CherryTea
async function notSurrender() {
 let data;
 while (true) {
   try {
     const response = await fetch(...);
     data = await parseResponse(response);
     break;
   }
   catch(e) {
      console.error(e);
   }
 }
 return data;
}
ужас
источник

KG

Kool Guy in Node.js — русскоговорящее сообщество
Alex CherryTea
async function notSurrender() {
 let data;
 while (true) {
   try {
     const response = await fetch(...);
     data = await parseResponse(response);
     break;
   }
   catch(e) {
      console.error(e);
   }
 }
 return data;
}
нет смысла в while здесь
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Kool Guy
нет смысла в while здесь
нет смысла тут вообще функцию делать
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
Ð
ужас
да, затупил, поправил
источник

АБ

Алексей Дмитриевич Бубенчиков in Node.js — русскоговорящее сообщество
Ð
мы используем сервисы для более крупных подсистем с отдельными бд, а это выглядит так, как будто лучше и проще бы работало в рамках целостной реляционной бд и одного кода клиента
ну а смысол мне в каждый проект впиливать управление файлами и модифицировать, хочется уже 1 раз микросервис написать и юзать его вдоль и поперёк например
источник

KG

Kool Guy in Node.js — русскоговорящее сообщество
let data

while(!data) {
try {
data = await getData()
}
catch(e) {
//handleerror
}
}
источник

L

Looch in Node.js — русскоговорящее сообщество
Kool Guy
let data

while(!data) {
try {
data = await getData()
}
catch(e) {
//handleerror
}
}
лучше через количество ретаев добавить
источник

KG

Kool Guy in Node.js — русскоговорящее сообщество
Looch
лучше через количество ретаев добавить
+
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Kool Guy
let data

while(!data) {
try {
data = await getData()
}
catch(e) {
//handleerror
}
}
вот это уже больше похоже на человеческий код
источник

Ð

Ð in Node.js — русскоговорящее сообщество
еще бы интервал времени добавить на повтор
источник

L

Looch in Node.js — русскоговорящее сообщество
Ð
еще бы интервал времени добавить на повтор
асинк рекурсию можно даже
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Looch
асинк рекурсию можно даже
да не нужна тут рекурсия, успокойтесь :)
источник

Ð

Ð in Node.js — русскоговорящее сообщество
рекурсия нужна там, где нужен обратный сбор промежуточных данных при выходе из рекурсии, заменять циклы рекурсией - это глупость и неумение программировать
источник

АП

Алексей Попов in Node.js — русскоговорящее сообщество
Alex CherryTea
а не, в твоем случае все проще.
funcion asyncLoop() {
 return fetch(...)
   .then(...)
   .catch({
      updatetoken(...);
      throw new Error('Error')
   })
}
asyncLoop
().catch(asyncLoop)
здравствуй, бесконечный цикл
источник

L

Looch in Node.js — русскоговорящее сообщество
Ð
да не нужна тут рекурсия, успокойтесь :)
но с асинк можно ж, конктест каждый раз будет новый. но вообще да если не нужен промежуточный результат тогда не нужно
источник

АП

Алексей Попов in Node.js — русскоговорящее сообщество
Yura
Чем лучше рекурсии?
тем, что можно установить число попыток, например
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
async function notSurrender(counter = 1) {
 let data;
 while (data !== undefined && counter !== 0) {
   try {
     const response = await fetch(...);
     data = await parseResponse(response);
   }
   catch(e) {
      counter--;
      console.error(e);
   }
 }
 return data;
}
источник

A

Alex CherryTea in Node.js — русскоговорящее сообщество
что я забыл?
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Алексей Попов
тем, что можно установить число попыток, например
в рекурсию тоже можно передать параметр-счетчик, но конечно так делать не стоит, каждому инструменту свое место.
источник

Ð

Ð in Node.js — русскоговорящее сообщество
Alex CherryTea
async function notSurrender(counter = 1) {
 let data;
 while (data !== undefined && counter !== 0) {
   try {
     const response = await fetch(...);
     data = await parseResponse(response);
   }
   catch(e) {
      counter--;
      console.error(e);
   }
 }
 return data;
}
типичный говнокод
источник