Типовое возвращаемое значение

Я пытаюсь вернуть строку из функции машинописи -

private _renderListAsync(): string {
  let _accHtml: string='';
    // Local environment
    if (Environment.type === EnvironmentType.Local) {      

      this._getMockListData()
      .then((response) => {
        _accHtml = this._renderList(response.value);
        alert("1: " + _accHtml)
        })
        alert("3: " + _accHtml);
        return _accHtml;
    }
    else if (Environment.type == EnvironmentType.SharePoint || 
              Environment.type == EnvironmentType.ClassicSharePoint) {

      this._getListData()
        .then((response) => {
          _accHtml = this._renderList(response.value);
          alert("2: " + _accHtml);          
        })      
        alert("3: " + _accHtml);
        return _accHtml;
    }       
  }

Однако я могу получить строковое значение только для предупреждений с "1" и "2", но не с "3", если предупреждение пустое, поэтому я не могу вернуть _accHtml из функции. Что я делаю неправильно? Также я замечаю, что предупреждение с "3" появляется перед "1" и "2", почему это так?

1 ответ

Решение

Это происходит потому, что ".then(...)" является процессом асинхронным, он открывает новый поток и продолжает выполнять следующие строки метода, он показывает 3 перед 2 и 1. Я рекомендую использовать Observables

Другие вопросы по тегам