testAngular(); //**(1º)**
function testAngular() {
var uri = 'some_webmethod_url';
var data = {
"key": "anything"
};
var res = $http.post(uri, data);
res.then(function (data) {
console.log(data); //**(2º)**
});
console.log(data); //**(3º)**
}
console.log(data); //**(4º)**
实际顺序为1º - 3º - 4º - 2º;为什么? 更重要的是,如何按顺序制作? (1º - 2º - 3º - 4º)
答案 0 :(得分:1)
因为'然后'是一个回调,当服务器的响应变得可用时(POST请求完成后)异步调用。因此,语句console.log(data); //**(2º)**
将仅在收到响应后执行,但其他处理将继续。
如果您需要您提到的订单,则必须将这些声明作为回调的一部分。另一个选择是使回调同步,Angular JS不支持开箱即用,但您可以查看源代码并进行更改。这篇SO帖子可能会帮助您https://stackoverflow.com/questions/13088153/how-to-http-synchronous-call-with-angularjs
或者其他SO帖子中提到的小黑客可能会对你AngularJs: Have method return synchronously when it calls $http or $resource internally有所帮助,但不建议这样做。
testAngular(); //**(1º)**
function testAngular() {
var uri = 'some_webmethod_url';
var data = {
"key": "anything"
};
var res = $http.post(uri, data);
res.then(function (data) {
console.log(data); //**(2º)**
console.log(data); //**(3º)**
console.log(data); //**(4º)**
});
}