Обратный вызов с ошибкой BreezeJS, вызывающий исключение «неопределенная ошибка не является объектом»

#javascript #angularjs #breeze

#javascript #angularjs #breeze

Вопрос:

Следующий запрос breeze работает отлично

 var manager = emFactory.newManager();
return manager.executeQuery(query).then(querySucceeded);
  

но когда я добавляю обратный вызов с ошибкой и повторно запускаю приложение

 var manager = emFactory.newManager();
return manager.executeQuery(query).then(querySucceeded).fail(function (err) {});
  

было выдано исключение «неопределенная ошибка не является объектом».

Я некоторое время ломал голову над этим, поэтому буду признателен за любую помощь.

Комментарии:

1. запрос функции выполнен успешно?

2. запрос функции выполнен успешно (данные) { датчики = data.results; log(«Извлеченные датчики с сервера», sensors.length, true); возврат датчиков; };

Ответ №1:

О, я понял.

Это не fail это catch .

используйте его следующим образом:

 return manager.executeQuery(q).then(success).catch(failed);
  

редактировать: с помощью

 function success(response) {}
  

и

 function failed(error) {}
  

Комментарии:

1. Ознакомьтесь с образцом promises из официальных документов breezejs.com/sites/default/files/apidocs/classes /… может ли быть, что документы неверны?

2. Похоже, что так. Возможно, это что-то старое и должно быть исправлено. Возможно ли это сделать там?

3. в конце концов, это catch происходит из обещания $ q в angular, а fail — из обещания Q.js? -> документация breeze angular

4. Да, это объясняет это, $ q.затем принимает несколько параметров, где в качестве then из Q.js выполняет один обратный вызов и возвращает обещание.

5. Только что заметил это тоже … catch работает, но fail — нет