鍍金池/ 問答/HTML5  HTML/ let 聲明的函數(shù)中請求的數(shù)據(jù)為什么在全局作用域請求不到

let 聲明的函數(shù)中請求的數(shù)據(jù)為什么在全局作用域請求不到


 let loadMapDataPromise = function() {
      indexHttpService.getDataPromise().then(function(res) {
           $scope.markerArr=res.Data;   
            });
        };
  loadMapDataPromise();
  console.log($scope.markerArr);
  console.log($scope);

為什么在函數(shù)外面打印$scope.markerArr是undefined 呢?
但是我在下面試著打印$scope,出來的$scope 上面有markerArr這個(gè)數(shù)組?。??

回答
編輯回答
遺莣

你這個(gè)跟let沒關(guān)系
是因?yàn)閜romise是異步的關(guān)系

當(dāng)你console時(shí),promise的resolve還沒執(zhí)行,所以$scope.markerArr不存在
只打印$scope,實(shí)際上在console里輸出的是一個(gè)引用,當(dāng)你去查看用鼠標(biāo)點(diǎn)擊時(shí)才去取值
這時(shí)promise已經(jīng)執(zhí)行完成了

如果你要打印出$scope.markerArr,需要在promise的then回調(diào)里輸出,比如可以這樣改

let loadMapDataPromise = function() {
  return indexHttpService.getDataPromise().then(function(res) {
    $scope.markerArr=res.Data;   
  });
};
loadMapDataPromise().then(() => { console.log($scope.markerArr); });
2018年4月17日 08:42
編輯回答
黑與白

異步異步異步
這根let沒關(guān)系好嗎,異步的問題
你輸出$scope有值是因?yàn)榭刂婆_的原因控制臺輸出的是引用地址

2017年3月6日 00:20
編輯回答
網(wǎng)妓

是我看走眼了。。。

如果你數(shù)據(jù)少的話 你可以改成同步

async:true

2018年8月15日 13:58
編輯回答
咕嚕嚕

額。。你的 $scope.data 是從哪里來的

2017年11月15日 15:15