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

时间:2017-11-11 21:04:17

标签: android reactjs react-native

我使用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上。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用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
 });