Bonjour,

J'essaye de faire une fonction qui appelle des requêtes XMLHttpRequest séquentiellement en file (FIFO), avec des callback une fois la requête terminée, voila mon code:

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
var queue = [];
var xmlHttpCurrentlyOccuped = false;
 
function doWebRequest(method, url, params, callback) {
    var parametres = new Object();
    parametres.myMethod = method;
    parametres.myUrl = url;
    parametres.myParams = params;
    parametres.myCallback = callback;
    queue.push(parametres);
    while (queue.length>0 && !xmlHttpCurrentlyOccuped){
        var doc = new XMLHttpRequest();
        doc.onreadystatechange = function() {
                    var status;
                    if (doc.readyState == XMLHttpRequest.LOADING || doc.readyState == XMLHttpRequest.OPENED){
                        xmlHttpCurrentlyOccuped = true;
                    }
 
                    if (doc.readyState == XMLHttpRequest.DONE && doc.status == 200) {
                        xmlHttpCurrentlyOccuped = false;
                        var data;
                        var contentType = doc.getResponseHeader("Content-Type");
                        data = doc.responseText;
                        queue[0].myCallback(data);
                        queue.shift();
                    }
 
                    else if (doc.readyState == XMLHttpRequest.DONE) {
                        xmlHttpCurrentlyOccuped = false;
                        status = doc.status;
                        if(status!=200) {
                            fonctionPourAnalyserLErreur(url);
                        }
                        queue.shift();
                    }
                }
        doc.open(queue[0].myMethod, queue[0].myUrl);
        doc.send();
    }
}
Mon problème c'est une fois la requête s'est bien déroulée la fonction callback ne marche pas (ligne 24).

Quelqu'un peut m'aider par un solution?

Merci d'avance