Workbox 4.1 backgroundSync: очередь и плагин - PullRequest
1 голос
/ 12 марта 2019

Мне нужно получить токен, прежде чем я смогу продолжить фоновую синхронизацию, затем я зациклю очередь, создам новый Запрос с токеном, добавленным к заголовкам иотправить его.

Я использую плагин для регистрации данных, представленных в автономном режиме, и он регистрируется под workbox-background-sync> requests.Цикл while (entry = await queue.shiftRequest()), по-видимому, не дает результатов, так как я не могу войти в цикл, поэтому я определенно делаю это неправильно.Должен ли я переместить код из плагина в очередь (так как мне нужно shiftRequest () )?Если так, как мне сделать так, чтобы мой маршрут регистрировал вещи в IndexedDB для фоновой синхронизации?

Это то, что я пытаюсь:

const queue = new workbox.backgroundSync.Queue();

const bgSyncPlugin = new workbox.backgroundSync.Plugin('bgsync', {
    onSync: async (q) => {
        // this will log
        console.log("Background sync started", q);
        let entry;
        while (entry = await queue.shiftRequest()) {
           // this will never appear in the log
           console.log("Hurray", entry);
        }
     }
 });

workbox.routing.registerRoute(
        new RegExp('/suggestion/post'),
        new workbox.strategies.NetworkOnly({
            plugins: [bgSyncPlugin]
        }),
        'POST'
    );

1 Ответ

1 голос
/ 22 марта 2019

Я столкнулся с той же проблемой. Решение описано здесь: https://github.com/GoogleChrome/workbox/issues/1982#issuecomment-475645712

...