簡體   English   中英

AngularJS變量范圍,JavaScript變量范圍

[英]AngularJS variable scope, JavaScript variable scope

var users = [];

Services.get(value).$loaded().then(function(data){

        users.push(data);
        // Taken data = [{name:"Jay",age:20}];
        console.log(users) // I get users = [{name:"Jay",age:20}]
});

console.log(users);

提示:“服務”功能正在從Web服務獲取數據。

//但是我在第二個console.log中得到了一個空(users = []),我猜答案應該是[{name:“ Jay”,age:20}],因為我在函數中使用了push。推送功能不起作用。 請幫忙

您的push位於then promise回調內部,該回調在$loaded完成時運行。

您的第一行代碼將立即運行並返回,這就是為什么users第一次為空的原因。

這是解釋諾言的動畫片:

http://andyshora.com/promises-angularjs-explained-as-cartoon.html

服務的get方法是異步的-很明顯,因為它返回一個promise對象,您將成功回調鏈接到該對象,以將get函數的結果推送到用戶數組中。 因為異步調用在正常流程之外執行,所以第二個console.log在成功回調之前執行。

第一個回調位於成功回調內部,因此它將執行到get請求完成之后,然后將用戶推送到數組中,這樣就應將用戶登錄到數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM