Bonjour
J'ai un léger problème de transmission de données entre deux fonctions synchrones ( LECT() et intialize() ), la première recevant ses données d'une fonction asynchrone ( FETCH() ).
FETCH() fonctionne parfaitement, rend une Promise, et les données sont lues correctement.
Cependant, au début, initialize() rend la chaîne vide ou undefined ( EMPTY() ), alors que les données sont lues après.
Comment lire les données de façon synchrone ou non ?
FETCH(request_file) reçoit en paramètre, une Request ou une url/pathname, et rend une Promise de type Response.
Son rôle est de lire le paramètre dans le cache ou directement, la dernière version du fichier paramètre.
TextJson(response) rend response.text() ou response.json() si valide, en fonction du content-type.
Je dois le peaufiner pour plus de type de response.
Cà marche, mais j'ai besoin d'accéder sans warning à LECT().
Addendum : J'ai fait les déclarations de initialize() et LECT() avant de mettre une Promise dans FETCH(). Je ne crois pas que çà change grand chose.
Merci beaucoup de votre aide.
Voici le code:
J'ai un léger problème de transmission de données entre deux fonctions synchrones ( LECT() et intialize() ), la première recevant ses données d'une fonction asynchrone ( FETCH() ).
FETCH() fonctionne parfaitement, rend une Promise, et les données sont lues correctement.
Cependant, au début, initialize() rend la chaîne vide ou undefined ( EMPTY() ), alors que les données sont lues après.
Comment lire les données de façon synchrone ou non ?
FETCH(request_file) reçoit en paramètre, une Request ou une url/pathname, et rend une Promise de type Response.
Son rôle est de lire le paramètre dans le cache ou directement, la dernière version du fichier paramètre.
TextJson(response) rend response.text() ou response.json() si valide, en fonction du content-type.
Je dois le peaufiner pour plus de type de response.
Cà marche, mais j'ai besoin d'accéder sans warning à LECT().
Addendum : J'ai fait les déclarations de initialize() et LECT() avant de mettre une Promise dans FETCH(). Je ne crois pas que çà change grand chose.
Merci beaucoup de votre aide.
Voici le code:
JavaScript:
function LECT(Request_File) {
FETCH(Request_File).then(function(response) {
if(response === false) {
console.log('Failed while reading file, with response : ' + response);
return false;
}
TextJson(response).then(function(text) {
console.log('Succeded while LECTing file : ' + Request_File + ' with text : ' + text);
return text;
}, function(error) {
console.log('Error while reading file : ' + Request_File + ' , with error : ' + error.message);
return false;
})
})
}
self.addEventListener('fetch', function(event) {
// In a real app, you'd use a more sophisticated URL check.
// if (event.request.url.match(/.*/)) {
// event.respondWith(FETCH(event.request.url));
var Request = event.request.clone();
var file = Request.url;
event.waitUntil(
FETCH(Request).then(function(response) {
if(response === false) {
console.log('Failed while FETCHING file : ' + file);
}
return response;
}, function(error) {
console.log('Error while FETCHING file, with error : ' + error.message);
return false;
})
);
return false;
});
function initialize() {
var file = staticAssets[1];
var text = null;
text = LECT(file);
if(!EMPTY(text)) {
console.log('Succeded while fetching file : ' + file + ' , with text : ' + text);
} else {
console.log('Failing while fetching file : ' + file + ' , with response : ' + text);
}
}
Dernière édition: