2015-10-15 6 views
6

Ich habe den folgenden Code in meinem Servicemitarbeiter:zu sehen, ob eine Anforderung erfolgreich aus einem Servicemitarbeiter

self.addEventListener('fetch', function (event) { 
    var fetchPromise = fetch(event.request); 

    fetchPromise.then(function() { 
    // do something here 
    }); 

    event.respondWith(fetchPromise); 
}); 

Allerdings ist es in der Entwickler-Konsole einige seltsame Dinge zu tun und scheint das Skript Last asynchron zu machen statt synchron (was in diesem Zusammenhang schlecht ist).

Gibt es eine Möglichkeit zu hören, wenn eine Anfrage abgeschlossen ist, ohne manuell fetch(event.request) aufzurufen?

Zum Beispiel:

// This doesn't work 
self.addEventListener('fetch', function (event) { 
    event.request.then(function() { 
    // do something here 
    }); 
}); 
+0

Was meinst du, das Skript wird asynchron geladen? Was machst du am Frontend damit? – philnash

+0

@philnash: Ich denke, ich wurde gerade durch den Wasserfall verwirrt: http://i.imgur.com/S3eU293.png Ich machte diese Änderung und die wahrgenommene Ladezeit der Website beschleunigt um 35% (2.0s -> 1.3s). Noch immer nicht sicher warum. – callumacrae

Antwort

3

Wenn Sie, dass Ihre ganze Reihe von Aktionen durchgeführt werden, um sicherzustellen, wollen, bevor die Antwort auf der Seite zurückgegeben wird, können Sie mit der ganzen Versprechen Kette reagieren sollen, nicht nur die anfänglichen Versprechen zurückgegeben durch holen.

self.addEventListener('fetch', function(event) { 
    event.respondWith(fetch(event.request).then(function(response) { 
    // The fetch() is complete and response is available now. 
    // response.ok will be true if the HTTP response code is 2xx 
    // Make sure you return response at the end! 
    return response; 
    }).catch(function(error) { 
    // This will be triggered if the initial fetch() fails, 
    // e.g. due to network connectivity. Or if you throw an exception 
    // elsewhere in your promise chain. 
    return error; 
    })); 
}); 
+0

Ja, darüber mache ich mir keine Sorgen. Ich beobachte buchstäblich nichts und modifiziere nichts, so dass es keinen Unterschied macht. Vielen Dank :) – callumacrae

Verwandte Themen