Promis解决element异步请求配置获取不到的问题

总结:Promise对象then函数一定会在异步请求完成后执行

问题描述:

 

 调用方法:

getProvinceCityList(12)

获取到的 cityList 是空值

 

输出顺序是:

return

ajax callback

所以改写一下:

 

 调用方法:

 

 通过返回promise对象保证 OriginCityList 的赋值一定是在ajax请求返回以后的赋值

 

// 获取省份下属的所有市列表
        getProvinceCityList(provinceID) {
            let cityList = [];
            let params = {};
            params.id = provinceID;
            return new Promise(function (resolve, reject) {
                getProvinceCityList(params, res => {
                    if (res.code == 0) {
                        cityList = res.data;
                        resolve(cityList);
                    }else{
                        reject();
                    }
                });
            });
        },

以下

this.getProvinceCityList(provinceID).then(function (value) {
                that.OriginCityList = value;
                that.form['dc_talent'].native_city_id = "";
                return;
            });

 

代码改变世界

 

import {
    getPermissionList,
    getPermissionCodeList
} from "../../../util/permission";

export default {
    data: function () {
        return {
            isSuperAdmin: false,
            permissionList: [],
            permissionCodeList: {},
            permissionCodeConfig: {},
        }
    },
    mounted() {},
    methods: {
        initPermissionList() {
            // 初始化用户权限列表
            getPermissionList().then(
                (cfg) => {
                    this.isSuperAdmin = cfg.isSuperAdmin;
                    this.permissionList = cfg.permissionList;
                    for (let idx = 0; idx < cfg.permissionCodeList.length; idx++) {
                        const code = cfg.permissionCodeList[idx];
                        this.permissionCodeList[code] = true;
                    }
                },
                () => {
                    console.error("获取权限配置失败");
                }
            );
        },
        initPermissionCfg() {
            getPermissionCodeList().then(
                (cfg) => {
                    this.permissionCodeConfig = cfg;
                },
                () => {
                    console.error("获取权限配置失败");
                }
            );
        },
        // 校验权限点
        // wystanxu
        // codeIdx -->> STARTINTERVIEW
        // 接口 /zhaopin/talent/getPermissionCode 定义键
        checkPermission(codeIdx) {
            let that = this;
            async function getData() {
                await that.initPermissionList();
                await that.initPermissionCfg();
            }
            getData();
            if (this.isSuperAdmin) {
                return true;
            } else {
                return this.permissionCodeList.hasOwnProperty(this.permissionCodeConfig[codeIdx]);
            }
        }
    },
};

 

posted @ 2020-12-11 12:35  许伟强  阅读(256)  评论(0)    收藏  举报