Функция обратного вызова executeQueryAsync выполняется время от времени - PullRequest
0 голосов
/ 01 ноября 2019

Мне нужно создать страницу публикации с пользовательским макетом, используя JSOM, и код работает нормально. Но в моем обратном вызове executeQueryAsync я пытаюсь получить идентификатор созданного элемента. Так, иногда я получаю предупреждение с идентификатором, а иногда страница обновляется без выполнения обратного вызова. кто-нибудь может направить меня?

        wikiPage.set_item("Title",pageName1)
        wikiPage.update();
        ctx.executeQueryAsync(Function.createDelegate(this, function(){
            var camlQuery = new SP.CamlQuery();
 camlQuery.set_viewXml(
                  "<View Scope='RecursiveAll'><Query>" +
                  "<Where>" +
                     "<Eq><FieldRef Name=\"FileLeafRef\"/><Value Type=\"Text\">" + pageName + "</Value></Eq>" +
                  "</Where>" +
                  "</Query></View>");
 collListItem = wikiPages.getItems(camlQuery);
 ctx.load(collListItem);
ctx.executeQueryAsync(Function.createDelegate(this, function(){
var listItemEnumerator = collListItem.getEnumerator();
while(listItemEnumerator.moveNext()) {    
    var oListItem = listItemEnumerator.get_current();
    alert(oListItem.get_id());} 
}),Function.createDelegate(this, this.onQueryFailed));
  }),
Function.createDelegate(this, this.onQueryFailed));

1 Ответ

0 голосов
/ 04 ноября 2019

Попробуйте загрузить страницу при обновлении вместо повторного запроса.

Демо:

wikiPage.update();
            ctx.load(wikiPage);
            ctx.executeQueryAsync(
                function () {
                    debugger;
                    alert(wikiPage.get_item("ID"));
                },
                error);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...