普通js数据接口的请求不能使用.then方式,修改成了promise的请求以及后面使用了.then的数据处理方式,如果不改成promise请求方式就不能使用.then的处理方式

问:

//获取用户权限
      requestTableHeader() {
        let arr = [];
        if (window.globalInfo.userMess) {
          window.globalInfo.userMess.roleList.forEach((item) => {
            arr.push(item.roleId);
          });
          this.sendGetHeaderRequest(arr);
        } else {
          var timeout = 5000,
            count = 0,
            step = 50;
          var timer = setInterval(() => {
            count += step;
            if (window.globalInfo.userMess) {
              clearInterval(timer);
              window.globalInfo.userMess.roleList.forEach((item) => {
                arr.push(item.roleId);
              });
              this.sendGetHeaderRequest(arr);
            }
            if (count > timeout) {
              clearInterval(timer);
            }
          }, step);
        }
      },

      //新增fields参数接口
      sendGetHeaderRequest(arr) {
        ajaxMethods(
          "post",
          `${sysApi}manage/title`,
          {
            permissionId: window.pageId,
            roleIdList: arr,
          },
          (data) => {
            let res = data.data;
            var fields = res.fields ? JSON.parse(res.fields) : "";
            console.log(fields, "this.fields ");
            if (fields) {
              console.log(fields);
              fields[0].codeList.map((item) => {
                console.log(item);
                
                switch (item.code) {
                  case 1:
                    // item.name = "超级管理员";
                    // this.userPermission = "超级管理员";
                    this.roleId = 1;
                    break;
                  case 2:
                    // item.name = "普通用户";
                    // this.userPermission = "普通用户";
                    this.roleId = 2;
                    break;
                  // case 1005:
                  
                  //   break;
                }
              });
              // this.businessArr = fields[0].codeList;
              // this.search.bisCode = fields[0].codeList[0].bsCode;
              // this.reloadList(1);
              this.reloadTaskList(1);
              // this.userNameCode = fields[0].code;
              // console.log(fields[0].codeList);
              // console.log(this.businessArr);
            }
            // this.dicTypes = fields[0].codeList
          },
          this
        );
      },这个代码requestTableHeader直接.then为什么报错了,语法错误,没有then方法

正确回答:

根据您提供的代码,`requestTableHeader()`函数和`sendGetHeaderRequest(arr)`函数是使用回调函数方式进行异步操作的。这种情况下,不能直接使用`.then()`来处理结果。

如果您想要使用`Promise`来处理异步请求的结果,需要对代码进行相应的修改。以下是修改后的代码示例:

requestTableHeader() {
  return new Promise((resolve, reject) => {
    let arr = [];
    if (window.globalInfo.userMess) {
      window.globalInfo.userMess.roleList.forEach((item) => {
        arr.push(item.roleId);
      });
      this.sendGetHeaderRequest(arr, resolve, reject); // 将resolve和reject作为参数传递给sendGetHeaderRequest函数
    } else {
      var timeout = 5000,
        count = 0,
        step = 50;
      var timer = setInterval(() => {
        count += step;
        if (window.globalInfo.userMess) {
          clearInterval(timer);
          window.globalInfo.userMess.roleList.forEach((item) => {
            arr.push(item.roleId);
          });
          this.sendGetHeaderRequest(arr, resolve, reject); // 将resolve和reject作为参数传递给sendGetHeaderRequest函数
        }
        if (count > timeout) {
          clearInterval(timer);
        }
      }, step);
    }
  });
},

sendGetHeaderRequest(arr, resolve, reject) {
  ajaxMethods(
    "post",
    `${sysApi}manage/title`,
    {
      permissionId: window.pageId,
      roleIdList: arr,
    },
    (data) => {
      let res = data.data;
      var fields = res.fields ? JSON.parse(res.fields) : "";
      console.log(fields, "this.fields ");
      if (fields) {
        console.log(fields);
        fields[0].codeList.map((item) => {
          console.log(item);
          
          switch (item.code) {
            case 1:
              // item.name = "超级管理员";
              // this.userPermission = "超级管理员";
              this.roleId = 1;
              break;
            case 2:
              // item.name = "普通用户";
              // this.userPermission = "普通用户";
              this.roleId = 2;
              break;
            // case 1005:
            
            //   break;
          }
        });
        // this.businessArr = fields[0].code

猜你喜欢

转载自blog.csdn.net/kuang_nu/article/details/131515101
今日推荐