Как получить доступ к данным из новой ошибки (data) в методе catch? - PullRequest
0 голосов
/ 16 ноября 2018

Вот мое обещание:

.then(function(response) {
    if (response.type === 'error') {
        console.log("will throw error", response);
        throw Error(response);
    }
    return extractResponseCallback(response);
})
.catch(function(error) {
    console.log("catching error", error);
    return error;
});

console.log, выполненное незадолго до throw Error(response);, показывает эту полезную информацию:

will throw error 
{ 
  cmd: 'has_active_project',
  errorcode: 'Invalid command',
  type: 'error' 
}

Но console.log("catching error", error) в методе catch показывает

catching error Error: [object Object]
    at /....js:18:19
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)

Кроме того, при использовании console.log (JSON.stringify («ошибка отлова», ошибка)) отображается только:

catching error {}
  • Как я могу получить доступ к данным, которые я передал с новой ошибкой?
  • Как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Аргументом для конструктора Error является string, и в результате получается свойство сообщения для результирующего объекта ошибки. Вы можете попробовать это, если знаете, что ваша ошибка будет объектом:

throw new Error(JSON.stringify(response))

Затем вы можете получить доступ к этому сообщению в вашем обработчике перехвата с помощью

error.message

или даже

JSON.parse(error.message)

если вам по какой-то причине необходимо взаимодействовать с отдельными свойствами.

0 голосов
/ 16 ноября 2018

Я полагаю, что вы ищете console.dir(), он показывает все свойства переданного объекта, и вы видите обычный объект с интерактивными свойствами и значениями вместо неинформативного [object Object] вывода.

Из документов:

Отображение интерактивного списка свойств указанного объекта JavaScript.Вывод представлен в виде иерархического списка с раскрывающимися треугольниками, которые позволяют вам видеть содержимое дочерних объектов.

Другими словами, console.dir - это способ увидеть все свойства указанного объекта JavaScript в консоли с помощьюкоторый разработчик может легко получить свойства объекта.

Следуйте по этому пути, если вам действительно нужно зарегистрировать всю эту информацию.Обратите внимание, что когда вы хотите увидеть определенное поле объекта ошибки, вы можете просто войти в систему как error.message, для большинства случаев этого достаточно.

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