PHP中文网2017-04-10 14:23:44
用原生xmlhttprequest.
同步的代价就是,在发送请求到服务器返回数据这段时间,你的网页将一直卡着,不能进行任何操作。楼主要想清楚。
高洛峰2017-04-10 14:23:44
使用Angular时无法将$http设置为同步。
因为Angular在JavaScript上构建了一套体系,你使用这套体系编程。换句话说,你使用Angular时,不应该考虑XMLHTTPRequest,同步,异步这些概念,你应该把它们暂时忘记。你使用Angular时就是在遵守Angular的规则。在这里就是$http的语法规则。
PHPz2017-04-10 14:23:44
如果你需要同步加载数据,那么$http
对你来说毫无意义. $http
底层使用的是浏览器的XMLHTTPRequest
对象,这个对象是实现AJAX
调用的基础. 你应该再回顾一下AJAX
是个神马东东
ringa_lee2017-04-10 14:23:44
人家说要同步。。虽说 $http不应是同步的.但他提供更低级的resouce?还是什么
有时也是有需求的,比如我这页面所有功能依赖于我将请求的东东,那么除了等待能干嘛呢
所以我干脆用同步,省的promise麻烦了
伊谢尔伦2017-04-10 14:23:44
赞成的答案@杨鑫诚Bruce
.state('', {
url : '/main',
ncyBreadcrumb : {
},
params : {
},
resolve : {
data : function($stateParams, $q) {
var deferred = $q.defer();
service.functionnnnnnn(params).then(function(result) {
deferred.resolve(result.data);
});
return deferred.promise;
}
},
views : {
'main' : {
controller : "",
controllerAs : "vm",
templateUrl : ,
}
}
})
加载完再进入router
大家讲道理2017-04-10 14:23:44
var xhr = createXhr(method);
xhr.open(method, url, true);
//https://github.com/angular/angular.js/blob/master/src/ng/httpBackend.js
//第61行
var xhr = new XMLHttpRequest();
xhr.open("GET", "test.txt", true);
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
console.log(xhr.responseText);
} else {
console.error(xhr.statusText);
}
}
};
xhr.onerror = function (e) {
console.error(xhr.statusText);
};
xhr.send(null);