[英]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.