Comment puis-je obtenir le ExecuteQueryAsync à se comporter de manière synchrone?

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 obtenir...le POINT de l'ENSEMBLE 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" de la partie...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.
InformationsquelleAutor jazaddict | 2014-03-14