我使用react-native-fs
从服务器下载文件并读取本地系统。一切正常,但是我遇到了一个问题,我不知道如何在下载文件时捕获故障。
例如,如果用户丢失了网络,我该如何捕获?我想要的是向用户显示警报消息,隐藏我正在显示的下载百分比消息并删除未完成的下载。
我有以下代码,但catch
永远不会运行:
const result = FS.downloadFile({
fromUrl: url, // URL to download file from
toFile: `${CACHE_DIR}/${name}`, // Local filesystem path to save the file to
background: false,
progressDivider: steps,
begin: onBegin,
progress: onProgress,
readTimeout: 2 * MIN,
connectionTimeout: 30 * SEC,
});
return result.promise
.then(() => {
this.index[name] = {
name,
path: `${CACHE_DIR}/${name}`,
size: 0,
};
return this.index[name];
})
.catch((error) => {
console.log('error!', error); // <-- This code never runs :(
// Show and alert message to the user...
// Hide downloading message
// Delete incomplete download file
});
目前我只关注Android,但稍后我将转向iOS。我想知道同样的问题是否也发生在iOS上,或者是否只发生在Android上。
非常感谢您的帮助。
您可以使用 then
的第二个回调
return result.promise
.then(() => {
this.index[name] = {
name,
path: `${CACHE_DIR}/${name}`,
size: 0,
};
return this.index[name];
}, (error) => {
console.log('error!', error); // <-- This code never runs :(
// Show and alert message to the user...
// Hide downloading message
// Delete incomplete download file
});