Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中查询后运行代码_Javascript_Angularjs - Fatal编程技术网

Javascript 在AngularJS中查询后运行代码

Javascript 在AngularJS中查询后运行代码,javascript,angularjs,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.top未定义,因为查询尚未返回。这不是处理异步调用的方式。原因是(简

我已经创建了一个小项目,但我有一些问题。我想在查询后运行一些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
未定义,因为查询尚未返回。

这不是处理异步调用的方式。原因是(简而言之)JavaScript引擎首先执行同步代码,然后执行异步代码

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

  • 调用
    中的代码,然后调用
    Book.get()函数的
  • 或者,连锁承诺并调用所需代码


  • 这不是处理异步调用的方式。原因是(简而言之)JavaScript引擎首先执行同步代码,然后执行异步代码

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

  • 调用
    中的代码,然后调用
    Book.get()函数的
  • 或者,连锁承诺并调用所需代码


  • 一切都要遵守诺言;由于它是一个异步回调,它可以在几毫秒或几分钟后返回-您不能在它之后分配变量
    vm.top
    是未定义的,因为它在您的回调之前运行,请确保一切都在承诺范围内;由于它是一个异步回调,它可以在几毫秒或几分钟后返回-您不能在它之后分配变量
    vm.top
    未定义,因为它在回调之前运行
    // 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;
    });