在AngularJS中查询后运行代码

时间:2018-04-27 08:07:24

标签: javascript angularjs

我创建了一个小项目,但是我遇到了一些问题。我想在查询后运行一些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.topundefined,因为查询尚未返回。

1 个答案:

答案 0 :(得分:2)

这不是你应该如何处理异步调用。原因是(简而言之)JavaScript引擎首先执行同步代码,然后执行异步代码。

理想情况下,您应该等到他们完成并将您想要的工作放入他们的回调函数中。所以在这里你可以

  1. .then function
  2. Book.get()内调用您的代码
  3. 或链接承诺并致电所需的代码。
  4. // 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;
    });