Promise Issue: Проверка видео в кеше - PullRequest
0 голосов
/ 08 октября 2019

Я получаю обещание, а не значение из функции поиска в кеше. Кажется, я не могу заставить функцию возвращать фактическое значение, только обещание.

Я уже написал функцию, которая открывает кэш и может найти видео. У меня даже есть функция, способная расшифровать, если cache.match является неопределенным ответом или реальным видео.

let inCache = video => {
  return caches.open(cacheName).then(cache => {
    return cache.match(video).then(response => {
      if(response != undefined) {
        return true;
      } else {
        return false;
      }
    }).then(result => {
      return result;
    });
  });
}

Когда я console.log этой функции, я получаю обещание, которое обычно все еще в ожидании , но это дает мне значение, только внутри PromiseValue вместо вывода.

1 Ответ

0 голосов
/ 08 октября 2019

Еще раз спасибо @Bravo за помощь в понимании проблемы!

Функция inCache работает нормально. То, как я это использую, было неверным. Вместо того, чтобы пытаться использовать функцию в функции console.log, я должен был вызвать функцию (потому что она асинхронная и всегда будет возвращать обещание) из другого места и использовать .then () после того, как обещанное было возвращено / разрешено.

Простой пример того, что я сделал, чтобы получить действительные значения, приведен здесь:

let test = setTimeout(() => {
  inCache(<my-video>)
  .then(result => {
    console.log(result);
  });
  clearTimeout(test);
}, 5000);

Это дало мне именно то, что я хотел, это истинное или ложное значение в консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...