Erm*_*bel 6 javascript synchronous angularjs
我有一个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;
}
Run Code Online (Sandbox Code Playgroud)
但这是异步的.如何将其转换为同步(我想让它等到我得到结果)?
不管Angular是不可能的.
请参阅https://github.com/angular/angular.js/blob/master/src/ng/httpBackend.js#L51,其中打开XMLHttpRequest,
xhr.open(method, url, true);
Run Code Online (Sandbox Code Playgroud)
a中的第三个参数xhr.open()可以设置为false或true,其中false是同步的,而true是异步的.在Angular的情况下,它被硬编码true,因此所有传出的调用都是异步的.
使用.success()回调等待异步调用返回,然后执行您想要执行的任何操作.
根据评论中的建议,您当然也可以通过原始javascript,jQuery或任何其他支持同步调用的库进行调用,但我建议使用异步角度调用的回调/延迟,因为同步调用是阻塞的,阻塞很糟糕.
| 归档时间: |
|
| 查看次数: |
13952 次 |
| 最近记录: |