Типовое возвращаемое значение
Я пытаюсь вернуть строку из функции машинописи -
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