Выполнить код после запроса в AngularJS - PullRequest
0 голосов
/ 27 апреля 2018

Я создал небольшой проект, но у меня есть некоторые проблемы. Я хочу запустить некоторый код JavaScript после моего запроса. Мой код такой:

Book.get({
    id: $stateParams.id,
    min: 0,
    max: 3
}).$promise.then(function(data){
    vm.list=data;
}).finally(function () {

});
vm.top=vm.list.name;

vm.top равно undefined, поскольку запрос еще не возвращен.

1 Ответ

0 голосов
/ 27 апреля 2018

Это не то, как вы должны иметь дело с асинхронными вызовами. Причина в том, что (вкратце) механизм JavaScript сначала выполняет синхронный код, а затем выполняет асинхронный код.

В идеале вам следует подождать, пока они не выполнят, и поместить желаемую работу в функцию обратного вызова. Так что здесь вы можете либо

  1. вызовите свой код внутри .then из Book.get() функции
  2. Или связать обещание и набрать нужный код.

// 1. First way
var getBook = Book.get({id:$stateParams.id,min:0,max:3}).$promise.then(function(data){
  vm.list=data;
  // Put your code here
}).finally(function () {

});

// 2. Second way
getBook.then(function(){
   vm.top= vm.list && vm.list.name;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...