建议在NativeScript / TypeScript应用程序中处理下载文件,以实现稳定性和性能

wn9m85ua  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(142)

我已经通过调用GET请求将数据文件的下载添加到应用程序中。
代码看起来工作得很好,但是我对健壮性和/或性能没有信心。任何关于性能/健壮性的建议**都将非常感谢。

  • 该文件非常小(小于200 kb)(并且将一直如此)。
  • 连接是在wifi下。
  • httpserver是一个Express/节点。
  • 该应用程序是一个Nativescript 8.3风格的Typescript。

下载路径的代码(直接从Express示例):

const download = (req, res) => {
      const fileName = req.params.name;
      res.download(dirRoot + fileName, fileName, (err) => {
        if (err) {
          res.status(500).send({message: "Echec téléchargement de fichier. " + err,});
          console.log("!!!!!! download, échec envoi du fichier " + dirRoot + fileName);
        }
        else 
          console.log(getCurrentDate() + " Envoi réussi du fichier " + dirRoot + fileName);
      });
    };

应用程序调用的代码:

  • 之前已检查文件是否已存在
  • global.selfIP包含设备的IP。
  • global.serverIP包含服务器的IP
export async function GetStock():Promise<string>  {
      let result = "";
      if (global.selfIP != "") {
        let serverUrl = "http://" + global.serverIP + ":8080/files/stock.csv";
        await Http.request({url : serverUrl, method : "GET",}).then(
          (response: HttpResponse) => {
            try {
              if ((response.statusCode >= 200) && (response.statusCode <=304)) {
                const resultat   = response.content.toString();
                const chemin     : string = path.join(downloadsPath, 'stock.csv')
                const filefevcsv : File = File.fromPath(chemin);
                filefevcsv.writeTextSync(resultat, WriteOnError, encoding.UTF_8);
              }
              else
                throw Error("Code réponse du serveur : " + response.statusCode);
            }
            catch(err) {
              result = serverUrl + "\nException traitement requete: " + err.message;
            }
          },
          (e) => {
            result = serverUrl + "\nException requete: " + e.message;
          }
        ),
        (error) => {
          result += serverUrl + "\nErreur requête : " + error;
        }
      }
      else 
        result += "Connexion wifi non établie";
      return result;
    }

相关问题