2011-07-31 4 views
0

Je suis en train d'écrire une extension Google Chrome (et j'apprends énormément dans le processus). Les fonctions de rappel sont quelque chose d'un mystère. J'ai commencé à faire des recherches sur le sujet pour résoudre un problème d'une question antérieure que j'ai postée et trouvé un post de @serg contenant un modèle que je pourrais utiliser. Voici la solution:callbacks google chrome extension

function getKeyWords(action, callback){ 
    chrome.extension.sendRequest(
      { 
       cmd: action 
      }, 
      function(response) 
      { 
       callback(response.keyWordsFound); 
      } 
    ); 
} 

var keyWords=""; 
getKeyWords("sendKeyWords", function(reply) { 
    keyWordList=reply; 

    for (var i = 0; i<keyWordList.length; ++i) 
    { 
     keyWords=keyWords+" "+keyWordList[i]; 
    } 
    msgComment1.innerHTML="<strong>"+keyWords+"</strong>"; 
    console.log("Reply is:", keyWords); 
}); 

Maintenant, je veux étendre cette solution, mais cette fois-ci la fonction doit retourner deux arguments au lieu d'un. J'ai modifié le code au-dessus du meilleur que je pouvais le comprendre mais il échoue. Voici le code modifié:

function getFacePageDat(action, callback){ 
    chrome.extension.sendRequest(
      { 
       cmd: action 
      }, 
      function(response) 
      { 
       callback(response.ageList, response.seekList); 
      } 
    ); 
} 

getFacePageDat("sendSearchPageInfo", function(reply1, reply2) { 
    profileAgeCityMetro=reply1; 
    profileSeeks=reply2; 
    alert("Reply is:", profileAgeCityMetro+" seeks "+profileSeeks); 
    console.log("Reply is:", profileAgeCityMetro+" seeks "+profileSeeks); 
}); 

Malheureusement, cela échoue sur « Erreur dans le gestionnaire d'événements pour « non défini »: TypeError:. « Journal » la propriété de l'objet # est pas une fonction que je connais la réponse à cette question est plutôt simple si vous avez une bonne connaissance des callbacks mais je ne pas d'aide là-bas

+2

Votre code semble correct (bien à part cette alerte avec virgule), le problème doit être quelque part élase. – serg

+0

Trouvez la ligne où se trouve l'erreur et vous saurez alors quel est le problème. –

Répondre

0

Serg est probablement correcte au-dessus:.?

console.log ("Répondre est:", profileAgeCityMetro + "cherche" + profileSeeks);

doit être

console.log ("Répondre est:" + profileAgeCityMetro + "seeks" + profileSeeks);