如何在下载文件时捕获错误



我使用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
 });

相关内容

  • 没有找到相关文章

最新更新