gpt4 book ai didi

javascript - Angular 处理不等待 http.get .then

转载 作者:行者123 更新时间:2023-11-28 18:59:05 24 4
gpt4 key购买 nike

我遇到一个问题,我的 Controller 似乎没有等待 http.get '.then'。我正在正确获取数据,但似乎在检索数据之前另一个函数正在处理。我浏览了很多帖子并尝试了这些帖子中提到的许多事情,但似乎没有帮助。我正在使用 PHP 来检索数据。

我有一个调用两个函数的 HTML 文件(我曾尝试过使用一个函数,但当它不起作用时,我尝试拆分该功能)。

调用的 HTML

<form editable-form name="editableForm" onaftersave="fetch();updateDetailsData()" >

Controller 功能

$scope.fetch = function() {
$http.get("api/checkSave/"+ JSON.stringify($scope.programDetails))
.then(function(data) {
$scope.okToSave = data.data.save;
$scope.missFields = data.data.fields;
console.log($scope.okToSave); // line #194
console.log($scope.missFields); // line #195
});
}

$scope.updateDetailsData = function(){
console.log($scope.okToSave); // line #202
}

控制台中显示的内容显示:

undefined    // line 202
false // line 194 - correct data
Object // line 195 - correct data

正如您所看到的,它似乎在 fetch 函数完成之前正在处理 updateDetailsData 函数。我认为 then 应该让处理等到 get 完成 - promise 返回。

我需要根据 $scope 变量中的值在 updateDetailsData 函数中进行一些处理,但是当它到达那里时,它们是未定义的。

有人可以帮忙吗?我确信我缺少了一些东西,但我想我已经尝试了这些论坛上提供的几乎所有解决方案,但最终仍然得到相同的结果。

最佳答案

问题来自:onaftersave="fetch(); updateDetailsData()"update 函数在 fetch 返回后立即执行,而不是在 fetch解析后立即执行。

稍微修改一下你的函数:

function fetch () {
return $http.get("api/checkSave/"+ JSON.stringify($scope.programDetails))
.then(function(data) {
// ...
});
}

$scope.fetchAndUpdate = function () {
fetch().then(updateDetailsData);
}

在模板中:

<form editable-form name="editableForm" onaftersave="fetchAndUpdate()">

关于javascript - Angular 处理不等待 http.get .then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994458/

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