关于Angular的简单:为什么它会改变秩序?

时间:2017-05-23 23:41:28

标签: angularjs variables printing console long-integer

只是一个'愚蠢'的问题,但对于AngularJS的学生来说,这让我很困惑。

当console.logging变量时,假设var result是来自GET或其他的承诺,.then()我做了一些任务,比如asignin变量。

    var result = ... ;

    $scope.number = {};


    result.then(function(data) {
        $scope.number = 5;

        console.log($scope.number);
    });


console.log($scope.number);

好! 所以对我来说,这应该打印

5
5

(如果我初始化$ scope变量,在此函数或承诺之外)

5
undefined

(如果第二个.log尝试在函数外部打印一个未定义的全局变量)

所以我得到了:

undefined
5

为什么out $scope.number在内部(5)变量之前打印?

我希望在获得GET之后在promise中初始化变量,然后使用初始化的var。

谢谢=)这会加快我的学习速度!

1 个答案:

答案 0 :(得分:0)

要理解的主要是以下内容立即返回承诺:

var result = ... ;

在此之后,您将函数传递给promise的.then方法:

result.then(...)

在那之后你就做了:

console.log($scope.number);

然后 - 一旦异步操作(如HTTP请求)完成并且promise解析 - 传递给.then的函数最终执行:

function(data) {
    $scope.number = 5;

    console.log($scope.number);
}

因此存在帮助您管理异步行为的承诺。当你必须管理多个异步功能时,它们真的开始闪耀:

asyncFunction1().then(function() {
    // This executes after asyncFunction1 completes
    return asyncFunction2();
}).then(function() {
    // This executes after asyncFunction2 completes
});