gpt4 book ai didi

javascript - 如何通过服务(AngularJS)用值填充变量

转载 作者:行者123 更新时间:2023-11-28 18:02:43 25 4
gpt4 key购买 nike

调用服务后我的变量没有值。我将 success 函数定义为一个单独的函数,并在 .then() 方法中调用它,代码如下:

// Code inside the Ctrl:
var successData = null;
vm.fillVar = null;
vm.loadData = loadData;

// service func
function loadData() {
return $timeout(function () {
vm.fillVar = vm.fillVar || [];

if (vm.fillVar == undefined || vm.fillVar.length == 0) {
CrudSvc.GetAllData().$promise.then(success, error);

console.log('Success Variable: ', successData); //--> here, the successData variable contains no data
vm.fillVar = successData;
console.log('fillVar for the view: ', vm.fillVar); //--> fillVar is empty, why??
}
}, 500);
}

// success func
function success(res) {
console.log('var res: ', res); //--> res contains data
successData = res;
console.log('success func: ', successData); //--> the variable contains data
}

我不明白为什么调用 success 函数后 successData 变量为空。这有点令人困惑...有人能解决这个问题吗?

最佳答案

此代码是异步的 CrudSvc.GetAllData().$promise.then(success, error); 因此,如果您想在此之后执行某些操作,您应该将代码更改为:

CrudSvc.GetAllData().$promise.then(success, error).then(function(){
// this code is executed after all the previous code is done and succeed
console.log('Success Variable: ', successData);
vm.fillVar = successData;
console.log('fillVar for the view: ', vm.fillVar);
});

您可以阅读有关 then 链接 HERE

The then method returns a Promise which allows for method chaining.

编辑

如果您想处理错误情况,只需使用 reject 函数,如下所示:

CrudSvc.GetAllData().$promise.then(success, error).then(function(){
// this code is executed if previous success
}, function(){
// this code is executed if previous error
}); // This is how you do further error handling via this approach

关于javascript - 如何通过服务(AngularJS)用值填充变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43249925/

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