React Native - возможно ли загрузить несколько ресурсов, используя rn-fetch-blob? - PullRequest
2 голосов
/ 17 января 2020

Есть ли способ загрузить массив объектов (.mp4, .jpg, et c ...), используя rn-fetch-blob? Прямо сейчас этот код захватывает один URL-адрес .mp4, но что, если у меня есть массив .mp4, смешанный с некоторым .jpg? Как мне сделать такую ​​вещь?

скажем, у меня есть данные:

const data = [
  {media: url.jpg}, 
  {media: url.mp4}, 
  {media: url.mp4}, 
  {media: url.jpg}
]

Как мне настроить выборку, чтобы она проходила через данные oop, и я могу что-то сделать после CameraRoll?

RNFetchBlob.config({
  fileCache: true,
  appendExt: 'mp4',
}).fetch(
    'GET',
    'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4',
  )
  .then(res => {
    CameraRoll.saveToCameraRoll(res.path())
      .then(async () => {
        // works
      })
      .catch(err => console.log('err:', err));
  });

Заранее благодарен за помощь!


Редактировать: я не проверял это, но только глядя на то, что я написал, это будет проблема?

for ( let foo of data ) {

  // write out some code to see if the url has .mp4 or .jpg extension?

  RNFetchBlob.config({
    fileCache: true,
    appendExt: 'mp4', // variable of the correct extension
  }).fetch(
      'GET',
      foo.media, // from the data object?
    )
    .then(res => {
      CameraRoll.saveToCameraRoll(res.path())
        .then(async () => {
          // works
        })
        .catch(err => console.log('err:', err));
    });
}

Или есть гораздо более простой способ сделать это?

1 Ответ

1 голос
/ 17 января 2020

Вы можете сделать что-то вроде этого кодов:

const data = [
  {media: url.jpg}, 
  {media: url.mp4}, 
  {media: url.mp4}, 
  {media: url.jpg}
]

data.map((item) => {

    const extention = item.media.split(".").pop(); // <-- get item extention

    RNFetchBlob.config({
        fileCache: true,
        appendExt: extention,  // <-- extention
    }).fetch(
        'GET',
        item.media, // <-- item url
    )
    .then(res => {
      CameraRoll.saveToCameraRoll(res.path())
      .then(async () => {
        // works
      })
      .catch(err => console.log('err:', err));
    });

})

...