Класс Result
Класс представляет собой результат операции с указанием статуса успеха/неудачи, данных и ошибок.
Аналогичен классу \Bitrix\Main\Result из Bitrix Framework.
Реализует интерфейс IResult
Пример использования
ts
import { Result, LoggerBrowser } from '@bitrix24/b24jssdk'
const logger = LoggerBrowser.build(
'Demo: Result',
import.meta.env?.DEV === true
);
// This function contains errors ////
function proc1(): Result
{
const result = new Result()
if(1 > 0)
{
return result.addError(new Error('Some error 1'));
}
return result.setData({someKey1: 'This data will not be used'});
}
// This function does not contain an error ////
function proc2(): Result
{
const result = new Result()
if(1 > 2)
{
return result.addError(new Error('Some error 2'));
}
return result.setData({someKey2: 'This data will be used'});
}
const result = new Result()
result.setData({
someKey0: 'SomeData'
})
if(result.isSuccess)
{
// proc1 returns a non-successful response ////
const response = proc1()
if(!response.isSuccess)
{
// this code works ////
result.addErrors([
...response.getErrors()
])
}
else
{
result.setData(Object.assign(
result.getData(),
response.getData()
))
}
}
if(result.isSuccess)
{
// this code does not work ////
const response = proc2()
if(!response.isSuccess)
{
result.addErrors([
...response.getErrors()
])
}
else
{
result.setData(Object.assign(
result.getData(),
response.getData()
))
}
}
if(!result.isSuccess)
{
// this code works ////
logger.error(result.getErrorMessages());
}
else
{
logger.log(result.getData());
}Этот пример демонстрирует, как использовать класс Result для хранения данных и обработки ошибок в результате выполнения операции.
- Создается новый объект
Resultи устанавливаются начальные данные{someKey0: 'SomeData'}. - Проверяется, успешен ли текущий результат (
result.isSuccess):- Вызов
proc1:- Если
proc1возвращает неуспешный результат, ошибки изproc1добавляются в текущий результат. - Если
proc1успешен, данные изproc1объединяются с текущими данными.
- Если
- Вызов
proc2:- Если
proc2возвращает неуспешный результат, ошибки изproc2добавляются в текущий результат. - Если
proc2успешен, данные изproc2объединяются с текущими данными.
- Если
- Вызов
- Итог
- Функция
proc1всегда возвращает ошибку, поэтому итоговый результат будет неуспешным. logger.logвыведет сообщение об ошибке['Some error 1'], так какproc1добавляет ошибку в результат.
- Функция
TIP
Работу с Result можно протестировать в примере.