IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

web extension et communication


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 465
    Points : 4 650
    Points
    4 650
    Par défaut web extension et communication
    bonjour,
    je me fais une extension avec un background script, et une popup.
    l'extension utilise "localbase.js" qui permet une gestion des indexedDB plus simple

    la popup veut recuperer un recapitulatif des clients pour cela, elle fait browser.runtime.sendMessage({action: 'getClientsRecap'}, ({data}) => { console.log(data); });.

    le background quant a lui fait : function getClientsRecap(request, sender, sendResponse) { sendResponse({data: 'ok'}); })=> ceci fonctionne

    cependant, lorsque j'inclu la requete dans l'indexedDB, j'ai le fameux message "The message port closed before a response was received."
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    db.collection('clients').get().then(clients => {
            const recapClients = [];
            clients.forEach(client => {
                recapClients.push({
                    id: client.id,
                    name: `${client.personLastName} ${client.personFirstName}`
                });
            });
            sendResponse({data: recapClients});
        });
    j'ai tout essaye :
    une simple promesse : ca fonctionne
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    return new Promise(resolve => {
           resolve();
        }).then(() => {
            sendResponse({data: 'ok'});
        });
    l'acces en DB dans une promesse, ca fonctionne pas
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    return new Promise(resolve => {
            db.collection('clients').get().then(clients => {
                const recapClients = [];
                clients.forEach(client => {
                    recapClients.push({
                        id: client.id,
                        name: `${client.personLastName} ${client.personFirstName}`
                    });
                });
                resolve(recapClients);
            });
        }).then(recapClients => {
            sendResponse({data: recapClients});
        });
    j'avoue etre un peu perplexe... je ne comprends pas ce qui se passe
    ps : la lib en question est celle-ci : https://github.com/dannyconnell/localbase

    pss: quand je fais des console.log du retour DB (dans le background), j'ai bien ma data
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 465
    Points : 4 650
    Points
    4 650
    Par défaut
    auto reponse : je pense que le probleme vient du cote asynchrone de l'indexedDB...
    du coup, en passant par du Long-lived connections, ca resoud le probleme
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/09/2009, 15h53
  2. Réponses: 7
    Dernier message: 22/06/2009, 17h40
  3. System web Extension 3.6
    Par kendras dans le forum Framework .NET
    Réponses: 0
    Dernier message: 04/06/2009, 12h49
  4. Réponses: 23
    Dernier message: 28/08/2007, 19h41
  5. [web] problème de communication
    Par Hermant dans le forum Web
    Réponses: 2
    Dernier message: 04/02/2003, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo