我可以使用 AngularJS ($http) 下面的调用序列吗?
Can I have, using AngularJS ($http), the following call sequence?
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º)
因为 'then' 是一个回调,当服务器响应可用时(在 POST 请求完成后)异步调用。因此语句 console.log(data); //**(2º)**
将仅在收到响应后执行,但其他处理的其余部分将继续。
如果您想要您提到的订单,您必须将这些声明作为回调的一部分。另一种选择是使回调同步,Angular JS 不支持开箱即用,但您可以查看源代码并进行更改。这个 SO post 可能会帮助你
或者其他 SO post 中提到的小技巧可能会对您有所帮助 尽管不推荐这样做。
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º)**
});
}
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º)
因为 'then' 是一个回调,当服务器响应可用时(在 POST 请求完成后)异步调用。因此语句 console.log(data); //**(2º)**
将仅在收到响应后执行,但其他处理的其余部分将继续。
如果您想要您提到的订单,您必须将这些声明作为回调的一部分。另一种选择是使回调同步,Angular JS 不支持开箱即用,但您可以查看源代码并进行更改。这个 SO post 可能会帮助你
或者其他 SO post 中提到的小技巧可能会对您有所帮助 尽管不推荐这样做。
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º)**
});
}