2010-01-18 5 views
1

Un peu (!) Peu d'arrière-plan avant que je puisse arriver à la question: J'implémente une solution de recherche basée sur le Web. Technologie utilisée: javascript (jquery), .net, html etc.L'appel de service Web séquentiel ne fonctionne pas

Tous mes appels de service Web sont effectués via javascript (appel inter-domaine ws). J'ai peu d'appels de service Web séquentiels qui ont tous une fonction de rappel de succès différente.

Je ne suis pas capable de digérer - quand j'appelle ces ws individuellement dans des endroits séparés, ils me renvoient des résultats corrects mais séquentiellement parfois ils donnent et parfois non.

exemple de code: ceci ne donne pas les résultats attendus tout le temps.

function submitSearchRequest(_queryString, Stores) { 
    if (Stores[1].length>0) { 
    //generate 'searchRequestForArtifact' request object 
    getSearchResponse("successcallForArtifact", _searchRequestForArtifact); 
    } 
    if (Stores[2].length > 0) { 
    //generate 'searchRequestForPerson' request object 
    getSearchResponse("successcallForPerson", _searchRequestForPerson); 
    } 
} 

function successcallForArtifact(response) 
{ 
    //show the results 
} 

function successcallForPerson(response) 
{ 
    //show the results 
} 
} 

Répondre

0

Si vous en avez besoin de façon séquentielle, vous devez lancer chaque recherche seulement après son retour. Actuellement, vous effectuez des appels asynchrones, ce qui signifie qu'il est déclenché puis continue avec le code. Actuellement, si le second appel est simplement plus rapide, la commande sera désactivée. Vous devrez soit effectuer un appel de synchronisation, soit simplement appliquer l'ordre en appelant la deuxième recherche de la fonction de réussite de l'artefact.

Si vous utilisez JQuery, il vous semble que vous pouvez définir le paramètre async sur false, ce qui forcera l'ordre que vous voulez mais cela ralentira les performances globales de votre page. Voir ceci question.

Questions connexes