Promise.all( ) 的使用

Posted pengfei25

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise.all( ) 的使用相关的知识,希望对你有一定的参考价值。

多个函数等待执行

        //初始化权限列表
        initPermission() {
            return new Promise((resolve, reject) => {
                this.$ajax.get(this.permissionUrl[1], { type: 9 }).then(res => {
                    if (res.code == 200) {
                        console.log(212)
                        this.permissionData = this.$_c.listToTree(res.data, { idKey: ‘id‘, parentKey: ‘parent‘ });
                        resolve(0)//这里一定要加上,否则then和catch都不会执行
                    }
                })
            })
        },

        //初始化操作类型
        initTypeId() {
            return new Promise((resolve, reject) => {
                this.$ajax.get(this.permissionUrl[2]).then(res => {
                    if (res.code == 200) {
                        //1.selfCheckbox的版本
                        // this.typeData = {
                        //     field: ‘typeId‘,
                        //     isShow: true,
                        //     isInline: true,
                        //     children: res.data
                        // }
                        //2.tree的版本
                        this.newtypeData = this.$_c.listToTree(res.data, { idKey: ‘id‘, parentKey: ‘parentCode‘ })
                        console.log(this.form.typeId)
                        resolve(0)
                        // this.$refs.devTypeTree.setCheckedKeys(this.form.typeId)//设置选中
                    }
                })
            })
        },

调用

mounted() {
        this.initRoleList()//初始化下拉角色列表
        Promise.all([
            this.initPermission(),//初始化权限树
            this.initTypeId()//初始化设备类型树
        ]).then(res => {
            console.log(res)
            this.initCheck()//初始化默认选中
        }).catch(function(){
            console.log(0)
        })
    }

注意事项

1.函数里面一定要加上 resolve(0),否则promise.all方法的then和catch都不会执行

 

技术图片

 

以上是关于Promise.all( ) 的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用并区分Promise.all和Promise.race?

(转载)理解和使用Promise.all和Promise.race

如何返回 Promise.all 获取 api json 数据?

Promise.all(...).spread 不是并行运行 Promise 时的函数

使用 Promise.all 避免唯一错误 E11000

Promise.all 的顺序执行