gpt4 book ai didi

javascript - 异步函数返回未定义且 $q 延迟

转载 作者:行者123 更新时间:2023-12-03 07:45:24 25 4
gpt4 key购买 nike

我通过一个工厂从我的 api 调用我的数据,如下所示:

app.factory('Service', ['$http', function ($http) {

var urlBase = 'http://localhost:50476/api';
var Service = {};

Service.getComp = function () {
return $http.get(urlBase + '/complaints')

};

return Service;
}]);

然后我使用我的 Controller 来使用指令:

getComp();
$scope.comp = [];

function getComp() {
var deferred = $q.defer();

Service.getComp()
.success(function (comp) {
console.log('comp', comp); //returns array data
$scope.comp = comp.data;
deferred.resolve(comp);
})
.error(function (error) {
$scope.error = 'error' + error.message;
});

return deferred.promise;
}

$scope.index = 0;
$scope.complaints = $scope.comp[0];
console.log($scope.complaints); //undefined
console.log($scope.comp); //array of 0

当我尝试访问函数外部的项目时,它是未定义的。我尝试寻找像使用 $q 这样的解决方案,但它仍然不显示数据。当我添加延迟部分时,我的 ng-repeat 也停止工作。

最佳答案

试试这个:

getComp();
$scope.comp = [];

function getComp() {
return Service.getComp()
.success(function (comp) {
$scope.comp = comp.data;
$scope.complaints = $scope.comp[0];
})
.error(function (error) {
$scope.error = 'error' + error.message;
});
}

当您记录日志时,这些值是未定义的,因为这些行在您的请求从服务器返回之前运行。这就是为什么设置 $scope.complaints 必须进入 success 回调。

关于javascript - 异步函数返回未定义且 $q 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com