Javascript AngularJS工厂承诺无法正常工作

Javascript AngularJS工厂承诺无法正常工作,javascript,angularjs,Javascript,Angularjs,我有一个angularjs工厂,我执行$http.get请求来获取JSON数据并进行比较。我试图返回过滤后的列表,但似乎不起作用 app.service('ScopeService',['$http','$q',函数($http,$q){ var服务={}; var permsList=[], 编码映射; 变量perms={ “管理员”:是的, “dev”:没错, “qa”:没错, “审计”:虚假, “将军”:没错, “grp1”:错误, “grp2”:错误, “grp3”:错误, “grp4

我有一个angularjs工厂,我执行$http.get请求来获取JSON数据并进行比较。我试图返回过滤后的列表,但似乎不起作用

app.service('ScopeService',['$http','$q',函数($http,$q){
var服务={};
var permsList=[],
编码映射;
变量perms={
“管理员”:是的,
“dev”:没错,
“qa”:没错,
“审计”:虚假,
“将军”:没错,
“grp1”:错误,
“grp2”:错误,
“grp3”:错误,
“grp4”:错误,
“grp5”:对,
“环境”:“开发人员”,
“版本”:“1.6.3”
}
函数映射(){
$http.get('./utils/codeMapping.json')。然后(函数(响应){
codeMapping=response.data.codeMapping;
函数findBU(BG){
返回u.find(代码映射,['id',Name]).number
}
if(永久grp1){
permsList=permsList.concat(findBU('A'));
}
if(永久grp2){
permsList=permsList.concat(findBU('B'));
}
if(永久grp3){
permsList=permsList.concat(findBU('C'));
}
if(永久grp4){
permsList=permsList.concat(findBU('D'));
}
if(永久grp5){
permsList=permsList.concat(findBU('E'));
}
if(永久审计){
permsList=[];
}
$q.resolve(永久列表);
});
}
service.getMapping=function(){
返回映射();
};
service.getMapping().then(函数(res){
console.log(res)
})
回程服务;
}]);

从您提供的代码中,很难判断您是如何使用它的。但是,看起来您并没有返回承诺,而是返回了一个数组对象。另外,我不知道你为什么要在get请求中链接另一个。试试这样的

请在此处查看一个工作示例:


嗨,我试过了。删除了第二个.then()并执行了您提到的操作。它说service.getMapping()不是函数。很难说您提供的代码有什么问题。因此,我在顶部将服务定义为空对象。当我创建一个名为service.getMapping的函数并尝试在该函数中返回mapping()的值时,它会返回undefined,因为它会被立即调用。承诺瀑布有用吗?在我的工厂的顶端。我可以进一步重构我的代码。将我的代码编辑为我的当前实现。看起来您从服务中删除了getMapping函数。
app.service('ScopeService', ['$http', '$q', function($http, $q) {

    var service = {};

    var permsList = [],
        codeMapping;

    var perms = {
        "admin": true,
        "dev": true,
        "qa": true,
        "audit": false,
        "general": true,
        "grp1": false,
        "grp2": false,
        "grp3": false,
        "grp4": false,
        "grp5": true,
        "env": "DEV",
        "version": "1.6.3"
    }

    service.getMappings = function() {
        return $http.get('https://jsonplaceholder.typicode.com/users/1').then(function(response) {
            /* manipulate your data */
            permsList.push('some data!');
            console.log(permsList);
            return $q.resolve(permsList);
        });
    }

    return service;
}]);