繁体   English   中英

在while循环内调用.then()时发生lint错误

[英]Lint error when calling .then() inside a while loop

这是代码:

buildImgSuccess(json) {
    if (typeof json !== "undefined") {
      if (json.filesUploaded.length) {
        //-- Update Saving Status --//
        this.setState({
          saving: true
        });
        //-- Set Vars --//
        let item = 0;
        let sortOrder = 0;
        let imgCount = this.state.images.length;
        if (!imgCount) {
          imgCount = 0;
        }
        while (item < json.filesUploaded.length) {
          //-- Determine if PDF Document was Uploaded --//
          if (json.filesUploaded[item].mimetype === "application/pdf") {
            //-- Handle Document Upload --//
            //-- Get Number of pages --//
            let theKey = json.filesUploaded[item].key;
            let theHandle = json.filesUploaded[item].handle;
            axios.get(`/getPhotos`, {
              headers: {
                "Content-Type": 'application/json'
              },
              transformRequest: (data, headers) => { delete headers.common.Authorization; }
            }).then(jsonResult => {
              let pageCount = 1;

我们的lint编译器正在产生此错误

Don't make functions within a loop

每当有一个.then().catch()在一个循环内。

有谁知道这个代码结构和任何可能的解决方案出了什么问题?

谢谢!

您需要在while循环之外创建函数。

内部创建会在每个无效的循环中重新创建函数。

见下文。

简化示例-错误

const i = 0;
while (i < 10) {
 const print = (i) => console.log(i++); //Created 10 times (0,1,...,8,9)
 print(i);
};

简化示例-正确

const i = 0;
const print = (i) => console.log(i++); //Created once
while (i < 10) {
 print(i);
};

用你的代码

        const handleJsonResult = (jsonResult) => {
              let pageCount = 1;
              //...
        }
        while (item < json.filesUploaded.length) {
          //-- Determine if PDF Document was Uploaded --//
          if (json.filesUploaded[item].mimetype === "application/pdf") {
            //-- Handle Document Upload --//
            //-- Get Number of pages --//
            let theKey = json.filesUploaded[item].key;
            let theHandle = json.filesUploaded[item].handle;
            axios.get(`/getPhotos`, {
              headers: {
                "Content-Type": 'application/json'
              },
              transformRequest: (data, headers) => { delete headers.common.Authorization; }
            }).then(handleJsonResult);
            //...
       }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM