【发布时间】:2020-05-05 21:56:43
【问题描述】:
我有这个设置,它通过一个数组运行,并将其保存到手机中,但它会在所有媒体文件下载之前打开 googleUrl。 Promise.all() 不应该处理这个吗?不是应该等mapMediaArray完成,然后.then()剩下的工作吗?
const mapMediaArray = selectedMedia.map(index => {
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());
});
});
Promise.all(mapMediaArray).then(() => {
Linking.openURL(googleUrl);
});
【问题讨论】:
-
因为你没有
return来自map回调的承诺。尝试记录mapMediaArray- 这不是一系列承诺 -
@Bergi 刚刚得到一个
undefined数组。即:[undefined, undefined, undefined]建议? -
我所说的 - 在回调函数中添加缺少的
return关键字 -
@Bergi 啊!好的,谢谢我在
return RNFetchBlob做的,现在似乎得到了一个承诺!谢谢 -
顺便说一句,取决于
CameraRoll.saveToCameraRoll(…)是否是异步的并返回一个承诺,你还需要另一个return那里
标签: reactjs react-native asynchronous promise