Promise.all实现业务逻辑

59 阅读1分钟

遇到的问题: 列表页面的搜索组件是通过数据传输过去的,只能set一次,如果数据发生变化时,重新set,里面通过接口请求的数据无法重新请求,重新传过去的数据也不会重新更新,所以需要在业务层把传输的数据整理好一次传输过去,多个接口请求时就需要接口都请求成功再set数据,所以需要用Prromise.all实现。

import axiosInstance from '@/pages/utils/request'

const conditionSearch = () => {
    const result1 = new Promise((resolve, reject) => {
        axiosInstance({
            url: '/ubs-nlcrs/anncCommon/getList1',
            method: 'GET',
            params: {},
        }).then((res) => {
            resolve(res);
        }).catch((err) => {
            reject(err);
        })
    })
    const result2 = new Promise((resolve, reject) => {
        axiosInstance({
            url: '/ubs-nlcrs/anncCommon/getList2',
            method: 'GET',
            params: {},
        }).then((res) => {
            resolve(res);
        }).catch((err) => {
            reject(err);
        })
    })
    const result3 = new Promise((resolve, reject) => {
        axiosInstance({
            url: '/ubs-nlcrs/anncCommon/getList3',
            method: 'GET',
            params: {},
        }).then((res) => {
            resolve(res);
        }).catch((err) => {
            reject(err);
        })
    })
    
    Promise.all([result1, result2, result3]).then((values) => {
        const list1 = values[0];
        const list2 = values[1];
        const list3 = values[2];
        
        //对list1数据处理
        {......}
        //对list2数据处理
        {......}
        //对list3数据处理
        {......}
        
        //最后set一次
        setFormConfigs(...)
    })
    
}