gpt4 book ai didi

javascript - AngularJs: $http 同步调用

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

我有一个 API 调用服务,如下所示,

    getValue: function(input) {
var deferred, url;
deferred = $q.defer();
url = "url";
$http.post(url, input).success(function(data, status, headers, config) {
return deferred.resolve({
success: true,
data: data,
status: status,
headers: headers,
config: config
});
}).error(function(data, status, headers, config) {
return deferred.resolve({
success: false,
data: data,
status: status,
headers: headers,
config: config
});
});
return deferred.promise;
}

但这是异步的。我怎样才能将它转换为同步(我想让它等到我得到结果)?

最佳答案

不,Angular 做不到这一点。

参见 https://github.com/angular/angular.js/blob/master/src/ng/httpBackend.js#L51 XMLHttpRequest 是用

打开的
xhr.open(method, url, true);

xhr.open()中的第三个参数可以设置为falsetrue,其中false为同步,true为异步.在 Angular 的情况下,它被硬编码为 true,因此所有传出调用都是异步的。

使用 .success() 回调等待异步调用返回,然后在那里做任何你想做的事。

根据评论中的建议,您当然也可以通过原始 javascript、jQuery 或任何其他支持同步调用的库进行调用,但我建议在异步 Angular 调用中使用回调/延迟,因为同步调用阻塞和阻塞是坏的。

关于javascript - AngularJs: $http 同步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603532/

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