使用场景:在一个请求结束后再执行第二个请求,第二个请求结束再请求第三个请求....

        list1() {
            return new Promise(resolve => {
                setTimeout(() => {
                    console.log('1', '我是第一个任务,必须第一个执行');
                    resolve(1);
                }, 3000);
            });
        },

        list2() {
            new Promise(resolve => {
                setTimeout(() => {
                    console.log('2', '我是第二个任务');
                    resolve(2);
                }, 2000);
            });
        },

两个函数list1要延迟三秒执行,list2延迟2秒执行,正常顺序执行的话在js里两个异步任务肯定是一起执行的,打印出来就是哪个用时短先打印哪个,希望list1三秒结束以后再执行list2

利用async await

    mounted() {
        this.init();
    },
    methods: {
        async init() {
            await this.list1();
            this.list2();
        },

        list1() {
            // 这个里的return很关键,一定要return出去
            return new Promise(resolve => {
                setTimeout(() => {
                    console.log('1', '我是第一个任务,必须第一个执行');
                    resolve(1);
                }, 3000);
            });
        },

        list2() {
            new Promise(resolve => {
                setTimeout(() => {
                    console.log('2', '我是第二个任务');
                    resolve(2);
                }, 2000);
            });
        },
}

这样打印出来就是1,2

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐