Javascript: как вызвать функцию, чтобы вернуть мое значение? - PullRequest
0 голосов
/ 12 марта 2019

Я работаю в javascript и у меня возникает следующая проблема: у меня есть лента в sharepoint, и у меня есть переменная, которая отключила / включила мою кнопку. Итак, в моем определении ленты у меня есть следующая функция для включения / отключения моей кнопки:enableTimesheetDetails Итак, моя функция, которая возвращает мне значение:

function enableTimesheetDetails() {
   var l_strSelectedKeys;
   var ds;

   l_strSelectedKeys = getSelectedKeys();
   if (l_strSelectedKeys == null) return (false);
   if (l_strSelectedKeys == '') return (false);
   if (l_strSelectedKeys.split('|').length != 1) return (false);

   ds = _satellite._tableCache.GetCachedRecord(l_strSelectedKeys.split('|')[0]);
   if (ds.GetDataValue(PJ.PSDBField.lineType) != PJ.LineType.regular) return (false);
    var projUID = ds.GetDataValue(PJ.PSDBField.proJ_UID);
    var taskUID = ds.GetDataValue(PJ.PSDBField.tasK_UID);
    projContext = PS.ProjectContext.get_current();    
    var projects = projContext.get_projects();
    project = projects.getByGuid(projUID);
    var tasks = project.get_tasks();
    task = tasks.getByGuid(taskUID);
    projContext.load(task);
    projContext.executeQueryAsync(GetTask, QueryFailed);
    GetTask();
   return (FlagDisabled);
}

function GetTask(){
    CustomFields=task.get_customFields();
    projContext.load(CustomFields);
    projContext.executeQueryAsync(GetCF, QueryFailed);
    GetCF();
}

function GetCF() {
        enumerator=CustomFields.getEnumerator();
      while (enumerator.moveNext()) {
        var toto =enumerator.get_current();
     if (toto.get_name() == fieldName) {
      CustomFieldTaskID=toto.get_id();
    }
    }
    var flag = projContext.get_customFields().getByGuid(CustomFieldTaskID);
    projContext.load(flag);
    projContext.load(task);
    projContext.executeQueryAsync(function() {
    var value = ReadCustomFieldValueOnObject(task , flag);
     }, QueryFailed);

}

  function ReadCustomFieldValueOnObject(obj, flag) {
      FlagDisabled= obj.get_fieldValues()[flag.get_internalName()];
     }

Проблема в том, что она возвращает мне значение FlagDisabled, прежде чем перейти к другой функции;поэтому в C # сначала моя функция будет выполнена, прежде чем перейти к возвращению, но здесь она не работает, и если я добавлю функцию вызова GetTask (), у меня будет следующая ошибка:

The collection has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.

Спасибоза вашу помощь Javascript новичок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...