我可以使用 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º)**
            });


    }