Comment puis-je obtenir le ExecuteQueryAsync à se comporter plus de synchronusly?

Aight..cette Sharepoint à l'aide de Javascript..je suis à l'aide d'Alertes pour déboguer mon code Javascript qui s'exécute à partir d'un composant webpart Éditeur de Contenu; le script est dans la bibliothèque d'Actifs .

Je me le procurer.....le POINT ENTIER de "async" appels de fonction est de ne pas attendre autour pour l'appel à la finition....mais je crains que les actions dans le ExecuteQueryAsync, futures, actions comptent, ne serait pas complète, ce qui entraîne une erreur......

Je suis tout à fait certain que, à cause de mon Alerte EN & Alerter ARRIÈRE de tir "à l'envers" que je suis, en effet, l'obtention de mon comportement Asynchrone. J'ai essayé le "ExecuteQuery" sans le "Async"...QUI a échoué lamentablement.

Quelqu'un veux gimme a pousser dans la bonne direction vers les activités dans mon ONSUCCESS fonction de finir avant de retourner à l'OBJ fonction?????

function One()
{
alert("in ONE");
OBJ();
alert("back from Obj, in One Again");
}

function OBJ(){
alert("in OBJ");
 var clientContext = null; 
 var currentweb = null; 
        clientContext = new SP.ClientContext.get_current(); 
        web = clientContext.get_web(); 
        var Questionlist = web.get_lists().getByTitle("Exam Objectives"); 
        var camlQuery = new SP.CamlQuery();
        var q = "";    //camlQuery text in q to limit colls returned, empty string returns all
        camlQuery.set_viewXml(q); 
        this.listItems = Questionlist.getItems(camlQuery); 

        clientContext.load(listItems);
         clientContext.executeQueryAsync(Function.createDelegate(this, this.onListItemsLoadSuccessObj), Function.createDelegate(this,         this.onQueryFailed)); 
 alert("leaving OBJ");    //THIS ALERT FIRES BEFORE THE ALERT BELOW********
 }

function onListItemsLoadSuccessObj(sender, args) { 
 var listItemInfo = '';
 var oListItem = null;
var listItemEnumerator = listItems.getEnumerator();

while (listItemEnumerator.moveNext()) {
    oListItem = listItemEnumerator.get_current();
    listItemInfo += '\nID: ' + oListItem.get_id() + 
        '\nTitle: ' + oListItem.get_item('Title');
}

alert(listItemInfo.toString());  //THIS ALERT FIRES AFTER THE ALERT ABOVE*********     
}
Vous êtes essentiellement en essayant d'entraver les script de progression à l'aide d'un rappel asynchrone qui n'est pas possible.
Et ainsi, au lieu que je devrais....?????
c'est une mauvaise conception de la part de MS, vous devriez avoir l'option des appels synchrones.

OriginalL'auteur jazaddict | 2014-03-14