axios.all 并发响应回调如何能让其只触发一次?

问题如下:

axios.all 并发响应回调触发了多次,我想只让触发一次(最后一个借口结束触发)

代码如下:

getInfo(){

    var that = this
    
    let obj = {
        banner: axios.get(that.url + 'home.php?Action=banner&setaction=banner'),
        logo: axios.get(that.url + 'home.php?Action=advertising&setaction=logo'),
        code: axios.get(that.url + 'home.php?Action=advertising&setaction=code'),
        himg: axios.get(that.url + 'home.php?Action=advertising&setaction=himg'),
        link: axios.get(that.url + 'home.php?Action=infolist&QType=link'),
        qq: axios.get(that.url + 'home.php?Action=infocontent&setaction=qq'),
        mail: axios.get(that.url + 'home.php?Action=infocontent&setaction=mail'),
        phone: axios.get(that.url + 'home.php?Action=infocontent&setaction=phone'),
        Hotline: axios.get(that.url + 'home.php?Action=infocontent&setaction=Hotline')
    }
    
    return obj
    }
    var that = this

    axios.all([that.getInfo().banner, that.getInfo().logo, that.getInfo().code,
        that.getInfo().himg, that.getInfo().link, that.getInfo().qq, that.getInfo().mail,
        that.getInfo().phone, that.getInfo().Hotline
    ])
    .then(axios.spread(function(banner,logo,code,himg,link,qq,mail,phone,Hotline){
        that.banner = banner.data
        var swiper1 = new Swiper('.banners', {
            pagination: {
                el: '.swiper-pagination',
            },
            autoplay: true,
            speed: 800,
            observer:true,
        });
        that.logo = logo.data.photo
        that.code = code.data.photo
        that.htxtimg = himg.data.photo
        that.link = link.data
        that.qq = qq.data.Content
        console.log(qq);
        that.mail = mail.data.Content
        that.phone = phone.data.Content
        that.Hotline = Hotline.data.Content
    }))



clipboard.png

问问题经常说不明白,所以加张截图吧!

clipboard.png

阅读 3.1k
2 个回答

这个地方直接就会把所有请求发出去,axios.get()直接就执行了啊
clipboard.png

造成多次请求的原因是你多次运行了getInfo函数,that.getInfo(),这个函数里面会重复发送axios请求,可以这么写

let obj = that.getInfo();

axios.all([obj.banner, obj.logo, obj.code,
    obj.himg, obj.link, obj.qq, obj.mail,
    obj.phone, obj.Hotline
])
.then()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题