2017-12-13 16 views
0

私は問題があります。私はserviceすべてのユーザーを取得するプロフィール画像。問題はimgがリクエストが完了/完了したときのみ表示されることです。httpコールからimgデータを取得する適切な方法

私が欲しいのは、すでに呼び出されている/読み込まれているimgを表示することです。

getImgService

uploadService.getImgs().then(function (data) { 
    vm.img = data; 
    myCache.put('imgsData', vm.img); 
    return vm.img; 
}); 

私はすでに私の問題を研究しようとしたと事前ロードが見つかりましたが、私は従うことができます記事を見つけることができません。

ありがとうございます!どんな提案も非常に感謝しています。

+0

これで、できるだけ早く処理するために_each_読み込まれた画像を個別に約束したいのですが、処理できる_all_読み込み画像の価値を約束するサービスがありますか? もしそうなら、約束の配列を返さないようにして、ループして同じ機能をそれぞれの約束された画像に別々に付けることができるのはなぜですか? – andy

+0

@andy thats私がやりたいこと。しかし、どのようにbtwをコメントするための感謝を知らない。 – Priz

+0

'getImgs()'のソースを共有できるかどうか分かりませんので、サービスをどのように動作させるかの詳細を調べることなく、結果を消費する方法についてのみ解答します。 – andy

答えて

1

あなたのgetImgs()を1つの約束ではなく約束の配列に戻してください。配列内の各約束は単一のイメージデータを返すべきです。この変更では、返されたすべての約束に対して同じコールバックを登録する必要があります。その結果、それぞれのイメージがロードされたイベントで反応し、すぐにキャッシュされます。例:

function cacheImage(data) { 
    if (!vm.img) { 
     vm.img = []; // assuming array store of single image data 
     myCache.put(‘imgsData’, vm.img); 
    } 
    vm.img.push(data); // add to array next image data 
} 

uploadService.getImgs().forEach(imgPromise => imgPromise.then(cacheImage)); 
関連する問題