2016-09-07 12 views
2

私はionicとangularjsを使用してアンドロイドアプリケーションを作成しており、ストレージからイメージを取得するためにwindow.requestFileSystemを使用しています。そのため、このプロセスのために、私は、コンソールでの非同期プロセスとその作業罰金と示すオブジェクトに対して$q.defer()を使用:console.log(deferred.promise)解決済みの値から値を取得する方法Angularjs

enter image description here

しかし、今、私は

var vals = deferred.promise; 
console.log(vals.$$state.value); 
よう deferred.promiseから値を取得しようとしていたときに

その表示undefined。誰かが私がその価値をどのように得ることができるか教えてくれますか?

マイコード:

var deferred = $q.defer(); 
    document.addEventListener("deviceready", function() { 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) { 
      imagePath = fileSystem.root.toURL() + 'SmaartMedia/' + splited[splitedLength-1]; 
      deferred.resolve(imagePath); 
      $rootScope.$apply(); 
     }); 
    }, false); 
    var vals = deferred.promise; 
    console.log(vals.$$state.value); 

おかげ

答えて

3
function getStuff() { 
    var deferred = $q.defer(); 
    document.addEventListener("deviceready", function() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) { 
     imagePath = fileSystem.root.toURL() + 'SmaartMedia/' + splited[splitedLength - 1]; 
     deferred.resolve(imagePath); 
     $rootScope.$apply(); 
    }); 
    }, false); 
    return deferred.promise; 
} 

//Get value like this 
getStuff().then(function(response){ 
    //Use value here 
}); 
+0

正しくない、イベントリスナーを見てください。遅れは内部にあるはずです。 eventListenerはこの関数では実行されないため、登録されているだけなので、実際には動作しているとは思えません。これ以上何もない。したがって、リターンはどちらも機能しません。 eventListenerのために彼の目標を達成する良い方法はありません。 – CodeNashor

関連する問題