2016-09-28 2 views
0

Я немного запутался, смешивая обещания и обратные вызовыУгловая Promise вокруг обратного вызова

Я пытаюсь сделать что-то вроде этого на заводе

startRecord: function (data) { 
    return $q(function(resolve, reject) { 
     myFunction(data,resolve,reject); 
    }) 
    } 

который называет

function myFunction(data,callback,error){ 
...do stuff 
    if(worked) 
     callback(response) 
    else 
     error(err) 

} 

Затем вызовите его из моего контроллера, например

factory.startRecord(data).then(function(data)...).catch(function(error)...); 

Однако тогда или вылов никогда не вызываются.

Я иду по правильному пути?

+0

Выглядит нормально на первый взгляд. Можете ли вы создать демо JSFiddle/Plunker? – Phil

+1

Кажется, работает здесь, как ожидалось, здесь ~ http://plnkr.co/edit/7lYGMJERPrySg6jj7gii?p=preview – Phil

+1

Это больше похоже на это. Http://plnkr.co/edit/7ofUIBoDgy2LY9YDdZqX?p=preview, который также работает. но мой код не работает - должно быть что-то еще происходит. – user5839

ответ

0

Моя проблема заключалась в том, что обратный вызов запускался с пустым сообщением перед отправкой полного сообщения. Мне пришлось добавить дополнительные проверки, чтобы остановить обратный вызов, пока сообщение не будет готово.

-1

Angular $ http назовите это обещание о самообслуживании, вам просто нужно назвать его совершенно.

код

Пример:

Фабрика:

angular.module(ApplicationName).factory('calendarFactory', ['$http', function ($http) { 
    calendarFactory.testCall = function (request_params) { 

     var req = { 
      method: 'POST/GET', 
      url: <URL>, 
      headers: { 
       'Content-Type': 'application/json' 
      }, 
      data: request_params 
     }; 

     return $http(req); 
    } 
} 

Контроллер:

function testCall(start, end) { 

    var request_paramas = { 
    start: start.toString(), 
    end: end.toString() 
    }; 

    calendarFactory.testCall(request_paramas).then(
     function(success){ 
      //Success method 
     },function(error){ 
      //Error method 
    }) 
} 

Здесь я сделал фоновым HTTP звонок от самого завода

+1

Я не использую $ http. Я использую $ q. Он не делает запрос $ http. – user5839

+0

попробуйте использовать http .. будет проще –

+1

Спасибо. Функция, которая вызывается, не выполняет http-запрос, она запускает запись камеры через API, который использует TCP. Я не могу использовать http. – user5839

Смежные вопросы