AngularJS:不使用$http服务异步AJAX请求的正确方法是什么
假设我们有一些从服务器获取数据的服务。它是异步的,不使用AngularJS$http服务 当我们在Angular中处理异步内容时,我们使用AngularJS:不使用$http服务异步AJAX请求的正确方法是什么,angularjs,angularjs-service,Angularjs,Angularjs Service,假设我们有一些从服务器获取数据的服务。它是异步的,不使用AngularJS$http服务 当我们在Angular中处理异步内容时,我们使用$q承诺。但有一个问题:承诺只有在$digest之后才能得到解决 有两种可能的修复方法: 1) $timeout 2) $rootScope.$apply() 在AngularJS$http服务中,使用了第二个变量 两者之间的区别是什么?正确的方法是什么 您可以在实际操作中尝试这两种方法:如果您可以使用$q,为什么不能使用$http?如果您可以使用$qI,您
$q
承诺。但有一个问题:承诺只有在$digest
之后才能得到解决
有两种可能的修复方法:
1) $timeout
2) $rootScope.$apply()
在AngularJS$http
服务中,使用了第二个变量
两者之间的区别是什么?正确的方法是什么
您可以在实际操作中尝试这两种方法:如果您可以使用$q,为什么不能使用$http?如果您可以使用$qI,您应该将代码重构为使用$http。您将选择第一种解决方案。项目太大太旧。我们将很快重写API模块:)问题是关于在没有$http的情况下使用AJAX请求:)我想很多项目都有自己的json rpc模块实现或类似的东西,无法轻松替换整个项目:)部分代码是在没有AngularJS的情况下编写的:)在示例1中甚至没有使用$timeout。。。?如果1。工作正常,它是更好的选择,因为defer.resolve自然会启动摘要循环,这比手动启动更可取。
var defer = $q.defer();
$.getJSON('http://example.com/my.json')
.success(function (data) {
$timeout(function () {
defer.resolve(data);
});
});
return defer.promise;
var defer = $q.defer();
$.getJSON('http://example.com/my.json')
.success(function (data) {
defer.resolve(data);
});
if (!$rootScope.$$phase) $rootScope.$apply();