gpt4 book ai didi

javascript - AngularJS http 返回值

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:15 24 4
gpt4 key购买 nike

我想在 AngularJS 中编写一个返回值(实际上它是一个字符串)的函数。该值由 http 请求返回,但异步让我抓狂。

我的第一次尝试是:

this.readParameter = function(key) {
$http({
method: "GET",
url: "XXXXXXX",
headers: { 'Content-Type': 'application/json' }
}).then(function successCallback(response) {
return response.data;
}, function errorCallback(response) {
throw new Error("Error");
})
};

但是由于 Angular 的异步特性(response.data 未定义),它当然不起作用

有什么方法可以做到?我只想返回值(字符串),所以我可以像

这样使用这个函数
var a = readParameter("key1")

最佳答案

您可以做的是在函数外部定义一些具有初始值并在成功函数内部设置响应值的变量,而不是返回它。

Delegator模式在这里非常有用,可以将 $http 任务分配给某些服务并使用回调方法进行响应。

Controller(针对特定请求调用 Service)-> Service(管理请求参数和其他内容并将工厂响应返回给 Controller)-> Factory(发送请求并将其返回给服务)

回调的基本例子

var myVariable = '';
function myFunction (key, callback) {
$http({
method: "GET",
url: "XXXXXXX",
headers: { 'Content-Type': 'application/json' }
}).then(function successCallback(response) {
callback(response);
}, function errorCallback(response) {
throw new Error("Error");
})
};

function myCallbackFunction(response) {
myVariable = response.data; // assign value to variable
// Do some work after getting response
}

myFunction('MY_KEY', myCallbackFunction);

这是设置值的基本示例,而是使用上述示例中的回调模式。

var myvariable = '';
function myFunction (key) {
$http({
method: "GET",
url: "XXXXXXX",
headers: { 'Content-Type': 'application/json' }
}).then(function successCallback(response) {
myvariable = response.data; // set data to myvariable
// Do something else on success response
}, function errorCallback(response) {
throw new Error("Error");
})
};
myFunction('MY_KEY');

关于javascript - AngularJS http 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33080713/

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