Это правда, что вы вызываете обещание внутри вашего метода, но ваш метод не является обещанием. Это синхронный метод, поэтому, как только все синхронные коды вызываются, вызывается promise.all (). Ваш метод должен быть примерно таким, чтобы его можно было идентифицировать как действительное обещание.
const mapMediaArray = selectedMedia.map(index => {
return new Promise((resolve)=>{
let cleanUrl = `${index.mediaUrl.split('?')[0]}`;
let extension = cleanUrl.split('.').pop();
RNFetchBlob.config({
fileCache: true,
appendExt: extension
})
.fetch('GET', index.mediaUrl)
.then(res => {
CameraRoll.saveToCameraRoll(res.path());
resolve()
})
})
}
Как и в приведенном выше коде, вы должны вернуть обещание, а затем вызвать решение для того, чтобы Promise.all работал правильно.