我有服务。让我们说这会返回字符串" B"。 我有以下控制器:
$scope.output;
var someVariable = 'A';
$scope.setUpConnection = function (someVariable) {
$scope.output = createConnection(someVariable);
console.log($scope.output);
}
createConnection = function (someVariable) {
var result;
service.connect(someVariable).then(function success(response) {
result = response.data;
}, function error(response) {
result = 'Error' + response;
});
return result;
}
createConnection()函数跳转到函数的末尾,而不是等待.then,什么都不返回,因此返回undefined。有人可以解释为什么它不等待承诺完成吗?
如果我用直接
替换回报,那么服务就不是问题$scope.output = response.data;
它工作正常。这个问题以及它设置的原因是,一旦我开始移动它,createConnection()函数最终会在一个单独的JS文件中发生,所以上面的解决方案不会起作用。因此,我认为我需要返回声明。
答案 0 :(得分:1)
这不起作用,因为在您返回result
承诺时未解决。你必须在setUpConnection
$scope.setUpConnection = function (someVariable) {
service.connect(someVariable).then(function success(response) {
$scope.output = response.data;
}, function error(response) {
$scope.output = 'Error' + response;
});
}