从angular的promise函数中获取数据

get out data from promise function in angular

本文关键字:获取 数据 函数 promise angular      更新时间:2023-09-26

我有这个angular项目的服务文件的一部分,问题是我不能从承诺返回值到主函数。然后函数…下面是代码

angular.module('starter.services', [])
.factory('Services', function ($http,$q) {
    var def = $q.defer();
  // Might use a resource here that returns a JSON array
    $http.get('JSONFILE').then(function (data) {
        def.resolve(data.data);
    });

this.result ={};
    var var1 = def.promise;
            var1.then(function (data){
                this.result = data;
                console.log(this.result);
            });
    // Some fake testing data
  console.log(this.result);
        return {
            all: function () {
                return var1;
            },
            remove: function (service) {
                var1.splice(var1.indexOf(service), 1);
            },
            get: function (serviceId) {
                for (var i = 0; i < var1.length; i++) {
                    if (var1[i].id === parseInt(serviceId)) {
                        return var1[i];
                    }
                }
                return null;
            }
        };
});

。结果将返回承诺之外的空对象。然后得到正确的数据

实际上,如果你在谈论这里的日志语句:

// Some fake testing data
console.log(this.result);

this.result没有相同数据的原因是Promise可能仍在等待(履行承诺)。

我怀疑当你看到这些console日志时,你会首先看到外的承诺显示。


同样,你的块作用域是不同的,这意味着this.result在Promise上下文中可以是不同的。

尝试改变:

this.result = {};

:

var result = {};

var1.then(function (data){
    result = data;
    console.log(result);
});