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)
发布于 2016-08-18 13:44:25
因为‘is’是一个回调,并在来自服务器的响应可用时(在POST请求完成后)异步调用。因此,只有在收到响应后才会执行语句console.log(data); //**(2º)**,而其他处理的其余部分将继续执行。
如果您想要您提到的订单,您必须将这些语句作为回调的一部分。另一种选择是使回调是同步的,这是角JS不支持的,但是您可以查看源代码并进行更改。这篇文章可能对你在那个https://stackoverflow.com/questions/13088153/how-to-http-synchronous-call-with-angularjs上有帮助
或者像其他文章中提到的那样,一次小的黑客攻击可能会帮助您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º)**
});
}https://stackoverflow.com/questions/39019531
复制相似问题