Bonjour,
J'ai le code suivant :
Mon problème c'est que la fonction makeRequest se termine avant la fonction callback. Du coup la valeur qu'elle retourne est null...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 function searchPubKeyOnServer(){ // Une fonction qui me sert à faire des requetes AJAX var makeRequest = function (callback,request) { // Variable que j'aimerais retourner var result = null; xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 ){ if (xhr.status == 200 || xhr.status == 0) { if(!xhr.responseText){ writeInConsole("****Erreur : responseText est vide."); } else{ // Appel à la fonction callback. Sa valeur de retour est sensée être affectée à result result = callback(xhr.responseText); ; } } } }; xhr.open("GET",request,true); xhr.send(null); return result } var extractKeyId = function (htmlString){ if( /(0x[a-z0-9]{16})/i.test(htmlString)){ writeInConsole("Key ID found : "+RegExp.$1); return RegExp.$1; } else{ writeInConsole("No Key ID found"); } } var request = 'http://keyserver.gingerbear.net/pks/lookup?search=john.smith%40example.com&fingerprint=on&op=index'; // Ici je m'attends à ce que ma fonction makeRequest me renvoit le keyID, mais keyID est null, car la fonction de callback se termine après que makeRequest ne se termine... var keyID = makeRequest(extractKeyId,request); // Suite... }
J'ai trouvé un sujet qui m'a l'air similaire ici mais je n'ai pas compris la solution donnée...
Partager