2015-10-15 6 views
6

मैं है मेरी सेवा कार्यकर्ता में निम्न कोड के भीतर से सफल होता है:देखकर अगर एक अनुरोध एक सेवा कार्यकर्ता

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

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

    event.respondWith(fetchPromise); 
}); 

हालांकि, यह कुछ अजीब सामान डेव कंसोल में कर रहा है और अतुल्यकालिक रूप से स्क्रिप्ट लोड बनाने जा रहा है सिंक्रनाइज़ेशन के बजाय (जो इस संदर्भ में खराब है)।

क्या fetch(event.request) पर कॉल किए बिना अनुरोध पूरा करने के लिए कोई तरीका है?

उदाहरण के लिए:

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

क्या मतलब है कि स्क्रिप्ट असीमित रूप से लोड हो रही है? आप इसके साथ आगे के अंत में क्या कर रहे हैं? – philnash

+0

@philnash: मुझे लगता है कि मैं सिर्फ झरना से भ्रमित हो रहा था: http://i.imgur.com/S3eU293.png मैंने यह परिवर्तन किया और वेबसाइट का अनुमानित भार समय 35% (2.0s -> 1.3 एस)। अभी भी यकीन नहीं है क्यों। – callumacrae

उत्तर

3

आप यह सुनिश्चित करें कि आपकी क्रियाओं की पूरी श्रृंखला प्रदर्शन कर रहे हैं इससे पहले कि प्रतिक्रिया पृष्ठ के लिए दिया जाता है, तो आप पूरे वादा चेन के साथ जवाब देना चाहिए चाहते हैं, न सिर्फ प्रारंभिक वादा लाने से लौटा

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

हाँ मैं इसके बारे में चिंतित नहीं हूं। मैं सचमुच बस निगरानी कर रहा हूं, कुछ भी संशोधित नहीं कर रहा हूं, इसलिए यह वास्तव में कोई फर्क नहीं पड़ता है। धन्यवाद :) – callumacrae

संबंधित मुद्दे