2016-08-31 10 views
0

がどのように配列に値を割り当てることができる非同期関数スコープの外にそれを使用すると言った機能の範囲外で、それを使うのか?更新配列値と非同期関数から

基本的に私は、配列内の値をランダム化工場を持って、私はdiv要素にランダムに画像を添付することができます。

$scope.Resources = ResourceFetch.getResource().then(function(resources){ 
    $scope.img1 = JSON.stringify(resources.img1); 
    $scope.img2 = JSON.stringify(resources.img2); 
    $scope.img3 = JSON.stringify(resources.img3); 
    $scope.img4 = JSON.stringify(resources.img4); 

    var myArray = [$scope.img1, $scope.img2, $scope.img3, $scope.img4]; 
    console.log('myArray is ' + myArray); // <- Fine. 

    var shuffledArray = []; 

    ShuffleArray.getShuffled(myArray).then(function(array){ 
     shuffledArray = array; 
     console.log('Shuffled array is ' + array); // <- Fine. 
     console.log('Shuffled array again ' + shuffledArray); // <- Fine 
     }); 

    console.log('Shuffled array outside is ' + shuffledArray); // <- Nothing. 
}); 

答えて

0

あなたのコードは正常に見えるが、getShuffledはおそらく非同期であると

console.log('Shuffled array outside is ' + shuffledArray); // <- Nothing. 

が呼び出された後にのみ終了することを忘れないでください。

+0

これはまさに私の問題です。ですから、関数内で '$ scope.shuffledImg1 = array [0]'を使って、私のビューで式を使うとしましょう。それはうまくいきます。しかし、どのように非同期関数スコープの外で配列を使用できますか? – angularchobo

+0

値をどのように使用しているのかわかりませんが、jsは問題ありません。あなたはそれを同期する必要がある場合は、同期シャッフルを実装するよりも、私はあなたがどのようにデータを使用して知っていないので、あなたがする必要があるか分からない – sagie

関連する問題