Size: a a a

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

2020 April 13

NF

Nikita Firsov in JavaScript — русскоговорящее сообщество
Блин, а continue из setTimeout для цикла нельзя сделать?
источник

🦜

🦜 in JavaScript — русскоговорящее сообщество
Nikita Firsov
Блин, а continue из setTimeout для цикла нельзя сделать?
у тебя цикл блокирует основной поток приложения
источник

Л

Лера in JavaScript — русскоговорящее сообщество
Всем привет. Помогите, пожалуйста, решить проблему, может кто-то уже с этим сталкивался.
Задача такая: нужно принять с сервера бинарный файл и скачать его на пк.
Проблема в том что если я сначала скачиваю на фронт , а затем по везде одинаково описанному алгоритму(создаю ссылку Blob с атрибутом download и искусственно нажимаю на нее), загружается медленно + уже на пк идет  ломаный файл(100% не приходит ломаный с бека)
второй способ я пробовала сразу в атрибут  href положить саму ссылку на скачивание, в этом случает файл идет в загрузки но пишет "Ошибка: Запрещено."
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Nikita Firsov
Я же написал, что в каждом запросе из 200 в Promise.all у меня стояли timeout-ы на 5000. Но иногда бывает такое, что Promise.all, так как она в await нифига не возвращает и программа стоит
Та же задача?
источник

🦜

🦜 in JavaScript — русскоговорящее сообщество
Лера
Всем привет. Помогите, пожалуйста, решить проблему, может кто-то уже с этим сталкивался.
Задача такая: нужно принять с сервера бинарный файл и скачать его на пк.
Проблема в том что если я сначала скачиваю на фронт , а затем по везде одинаково описанному алгоритму(создаю ссылку Blob с атрибутом download и искусственно нажимаю на нее), загружается медленно + уже на пк идет  ломаный файл(100% не приходит ломаный с бека)
второй способ я пробовала сразу в атрибут  href положить саму ссылку на скачивание, в этом случает файл идет в загрузки но пишет "Ошибка: Запрещено."
доступ к хранилищу файла должен быть открыт
источник

NF

Nikita Firsov in JavaScript — русскоговорящее сообщество
Sm•ok 😈✔️
Та же задача?
yep)
источник

u

undefined in JavaScript — русскоговорящее сообщество
Nikita Firsov
То есть 199 запросов возвращаются, а последний не возвращается и в итоге программа стоит и ждет. И как мне кажется, просто происходит какой-то разрыв. И Этим самым setTimeout-ом хотел проверить, как будет с ним работать
не очень понимаю твоей проблемы, но могу предложить сделать следующее:
function fetchWrap(url, options, timeout) {
   return new Promise((resolve, reject) => {
       fetch(url, options).then(resolve, reject)
       
       if (timeout) {
           setTimeout(reject, timeout, new Error('request timeout'))
       }
   })
}
А потом это обернуть в
const result = Promise.allSettled([
   fetchWrap('/path', {}, 60000),
   fetchWrap('/newpath', {}, 60000)
])
источник

Л

Лера in JavaScript — русскоговорящее сообщество
🦜
доступ к хранилищу файла должен быть открыт
что вы имеете в виду?
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
В чем проблема

for(200раз) {
  request(url)
     .then(nextRequest)
}
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Это не будет блочить поток
источник

🦜

🦜 in JavaScript — русскоговорящее сообщество
Лера
что вы имеете в виду?
что написал
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Ну 200 как выполнится
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Ожидать он не будет запросы. Лишь калбеки закинет в микротаск кью, как только будет готово
источник

Л

Лера in JavaScript — русскоговорящее сообщество
🦜
что написал
доступ на сервере?
источник

u

undefined in JavaScript — русскоговорящее сообщество
undefined
не очень понимаю твоей проблемы, но могу предложить сделать следующее:
function fetchWrap(url, options, timeout) {
   return new Promise((resolve, reject) => {
       fetch(url, options).then(resolve, reject)
       
       if (timeout) {
           setTimeout(reject, timeout, new Error('request timeout'))
       }
   })
}
А потом это обернуть в
const result = Promise.allSettled([
   fetchWrap('/path', {}, 60000),
   fetchWrap('/newpath', {}, 60000)
])
Тем самым ты задашь timeout для всех запросов. А потом тебе останется разобрать, какие промисы успешно выполнились, а какие были ошибочными/завершились по timeout
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Да херовая идея делать через оллсетлд, думаю
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Ему нужно максимум 200 запросов параллельно
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
Оллсетлд будет ждать пока все 200 не выполнятся, а надо как только 1 выполнился, то взялся следующий
источник

S

Sm•ok 😈✔️ in JavaScript — русскоговорящее сообщество
И будет всегда по 200, это как минимум быстрее будет
источник

SS

S S in JavaScript — русскоговорящее сообщество
Объясните пожалуйста, зачем в jest мокать api вызовы, например axios? Я хочу получить данные из инета, а не писать их в mockResolvedValue, которые заменяют ответ любого запроса. Где они используются? Проблему они так и не решают с проверкой ответа апи на какое то соотвествие
источник