gpt4 book ai didi

javascript - AngularJS $http函数在返回时总是返回未定义

转载 作者:行者123 更新时间:2023-12-03 10:05:47 24 4
gpt4 key购买 nike

var bar = dataService.makeHttpRequest("GET", "/documents/checkfilename/", null,
function (data, status, headers, config) {
// I can see `true` if I alert(data); here
// I want to return the contents of data because
// it's a true/false and would perform tasks based
// on it being true or false.

return data;
});

alert(bar); // this should alert `true` or `false` but is `undefined`

为什么alert(bar)总是返回undefined?我知道上述函数中的datatruefalse,我可以提醒它;但是,我想归还它,并且只在它是真的时才做事情。

dataService.makeHttpRequest 服务函数如下所示:

dataService.makeHttpRequest = function(requestType, urlString, dataObject, successFunc, errorFunc) {
$http({
method:requestType,
url:$rootScope.serverAddress+urlString,
data:dataObject
})
.success(successFunc)
.error(errorFunc);
};

最佳答案

对于为什么你的方法 makeHttpRequest 返回未定义的最简单的解释是,它实际上并没有返回值(return 语句在哪里?)

但是,即使您返回对 $http 的调用结果,它也不会是您想要的。回调的重点是处理异步操作 - 如果您想根据从 HTTP 响应接收到的数据执行逻辑,则必须在回调本身中完成。

由于 $http() 返回一个 promise ,因此执行您想做的事情的更简洁的方法是:

dataService.makeHttpRequest = function(requestType, urlString, dataObject) {
return $http({
method:requestType,
url:$rootScope.serverAddress+urlString, //recommend taking this as a parameter instead of abusing $rootScope
data:dataObject
});
};

dataService.makeHttpRequest("GET", "/documents/checkfilename/", null).success(function (data, status, headers, config) {
//do whatever you want with "data" here
}); //can also chain ".error" here to specify an error callback

关于javascript - AngularJS $http函数在返回时总是返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359411/

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