从函数中的请求返回值

时间:2017-09-18 11:50:37

标签: javascript angularjs

我正在从AngularJS中的控制器进行调用,该控制器将数据传递给服务以获取响应,然后我需要检查条件。

控制器

patents.forEach(function(item){ //patents is resolved in a router file which returns a number of items from a request
    item.renewalProgress = patentsService.phaseProgress(item);
})

服务

factory.phaseProgress = function(item) {

var progress = function(item)
    factory.fetchCostAnalysis(phase.id)
        .then(
            function(response){
                var progress;
                    switch(response.currentcostBand) {
                        case 'Green':
                        progress = 0;
                            break;
                        case 'Amber':
                         progress = 20;       
                            break;
                        case 'Red':
                        progress = 40;           
                            break;
                        case 'Blue':
                        progress = 60;
                            break;
                        case '
                        progress = 80;
                    }
                 return progress
                }, function(errResponse){
                    console.log('no')
                }
            )


    return progress;

}

该值将以未定义的形式返回。

问题

如何从服务向控制器返回值?如果有人能提出更好的方法吗?

1 个答案:

答案 0 :(得分:1)

在您的服务中,您有一个返回promise的异步函数, 这意味着当您到达该部分时,您的流程将继续,then()中的部分代码将在稍后执行。

如果您希望等待执行承诺,可以使用AngularJS中的Deffer

阅读AngularJS承诺: promises-in-angularjs-the-definitive-guide