Promise.some() с таймаутом?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 Promise.some() с таймаутом?

Сообщение Гость »


Сценарий использования: получить кучу URL-адресов и кэшировать результаты. Те, которые выполняются быстро (скажем, 500 мс), включаются в этот проход, все, что занимает больше времени, все равно выполняются и сохраняются в кеше, поэтому в следующий раз (~ 10 минут спустя в нашем приложении) они будут в кеше.

Мне хотелось бы иметь возможность сделать что-то вроде Promise.someWithTimeout(promises, timeout), где результатом будет массив разрешенных значений, завершенных до истечения времени ожидания. (Promise.some() действительно близок, он требует подсчета, а не таймаута)

Что-то вроде

Promise.someWithTimeout([обещания], ) .then((результаты) => { //вещи }) Как выглядит каждое из обещаний

return memcache.getAsync(keyFromUrl(url)) .then((cacheRes) => { если (cacheRes) вернуть кэшRes; //нет в кеше иди возьми вернуть rp(url) .then((rpRes) => { //Сохраняем в кеш, но не дожидаемся завершения memcache.setAsync(keyFromUrl(url), rpRes, 86400).catch((e) => { /*регистрация ошибок*/ }) вернуть rpRes; }) }) Идея состоит в том, что если URL-адрес возвращается быстро, мы используем его, если это занимает больше времени, мы освобождаемся, но все равно кэшируем результат, поэтому в следующий раз он у нас будет. Таким образом, время ожидания rp() будет намного дольше, чем время ожидания Promise.someWithTimeout()
.
Кто-нибудь написал библиотеку для этого (я не могу ее найти) или есть лучший шаблон? Я думал об использовании Promise.all().timeout().finally() с обещаниями, сохраняющими результаты в массиве, но это кажется неправильным, потому что я не могу понять. включено.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Неверный пакет. Пакет Some.app/Frameworks/Some.framework не поддерживает минимальную версию ОС, указанную в Info.plist.
    Anonymous » » в форуме IOS
    0 Ответы
    69 Просмотры
    Последнее сообщение Anonymous
  • Существует ли PHP-эквивалент функции JavaScript Array.prototype.some()?
    Anonymous » » в форуме Php
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • C# Gameboy Emulator Sound Interference Some - Naudio
    Anonymous » » в форуме C#
    0 Ответы
    1020 Просмотры
    Последнее сообщение Anonymous
  • Spring JMS и ActiveMQ Artemis: управление таймаутом для синхронных сообщений
    Гость » » в форуме JAVA
    0 Ответы
    50 Просмотры
    Последнее сообщение Гость
  • Udp выберите проблемы с таймаутом. Либо тайм-аут, либо чтение со всех клиентов
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Javascript»