2017-01-24 10 views
0

firebaseに複数の画像をアップロードしようとしていますが、続行する前に返されたURLが必要です。継続する前に、そのリターンを待つ方法はありますか?ファイヤーベース画像のアップロードを待つ方法

私が持っているコードは次のとおりです。

data.forEach((element) => { 
    const sessionId = new Date().getTime(); 
    Blob.build(RNFetchBlob.wrap(element.path), { type : 'image/jpeg' }) 
    .then((blob) => {firebase.storage() 
    .ref('images') 
    .child(`${sessionId}`) 
    .put(blob, { contentType : 'image/png' }) 
    .then((snapshot) => { 
     element.image = snapshot.metadata.downloadURLs[0]; 
    }) 
    }); 
}); 

Parse.Cloud.run('doSomething', { 
    data : data, 
}).then(res => { 
    dispatch({ 
    type: 'WE_DID_SOMETHING', 
    }); 
}); 

私は、複数の画像のアップロードを持つようにしたいので、私は、私はパースを呼び出す前に、firebaseする複数の呼び出しを持つことになります。どのように私はfirebase呼び出しからのURLを持っていることを確認することができます続行する前に?

ご協力いただければ幸いです。

答えて

1

私は、あなたが探していることはPromise.all()であると考えている:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

Promise.all(array)array内のすべての約束が解決した後でのみ解決されます。 forEachは.then()を使用して各解決を個別に処理するのではなく、各繰り返しで約束オブジェクトを作成し、配列にプッシュしてからdata.forEach()呼び出しの後にPromise.all(array)を実行します。

+0

ありがとうございました。 –

関連する問題