首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用AngularJS ($http)获得以下调用序列吗?

我可以使用AngularJS ($http)获得以下调用序列吗?
EN

Stack Overflow用户
提问于 2016-08-18 13:30:03
回答 1查看 74关注 0票数 1
代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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,尽管不建议这样做。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39019531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档