账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    瀑布流请求了两次接口,请问怎么解决?
    39
    0
    export function myList (obj, pageNumber, fn, url, query) {
      obj.panel.page.pageNumber = pageNumber
      let data
      if (query) {
        // 如果有传进来查询参数,则用传进来的参数
        console.log('------组件自带参数------')
        data = query
      } else {
        // 否则,使用默认的分页参数
        console.log('------默认分页参数------')
        obj.data = {
          'page': obj.panel.page,
          'row': {
            'host_ids': obj.hostIds,
            'hostIds': obj.hostIds
          }
        }
        data = obj.data
      }
      obj.crud.loading(obj, true)
      // 如果hostid改变了,则数据都清空,
      if (obj.lastId !== obj.hostIds) {
        obj.panel.gridData = []
        obj.n = 1
      }
      obj.getData(obj, url, data, msg => {
        // console.log(msg)
        obj.isFirst = false
        obj.startScroll = true
        let len
        // 因为返回的数据分几种情况 所以这里得多加判断
        // 首先 如果msg为真
        if (msg) {
          //再它的totalRow或者total也为真
          if (msg.totalRow >= 0) {
            len = msg.totalRow
          } else {
            len = msg.total
          }
          if (msg.length >= 0) {
            len = msg.length
          }
        } else {
          len = 0
        }
        // 设置标题总记录数
        obj.totalRow = len
        obj.total = len
        // 为了搜索和排序做的准备
        if (msg) {
          if (msg.size) {
            obj.data.size = msg.size
            // obj.data.size.beforeId = msg.size.beforeId
            // obj.data.size.offset = msg.size.offset
            obj.n = parseInt(msg.size.offset) / parseInt(obj.panel.page.pageSize)
          }
        } else {
          // 显示完页面的记录条数后,如果msg其实是undefined的,那么,直接return
          obj.crud.loading(obj, false, () => {
            obj.panel.hasData = false
            obj.reloadLock = false
          })
          return
        }
    
        // 数据处理函数
        function dataHanding (tmp) {
          // 把所有的checked设为false
          tmp.forEach(function (curr) {
            curr.checked = false
          })
          //把新拿到的数据推进gridData中去作处理
          obj.crud.loading(obj, false, o => {
            // 如果fn传进来 才执行
            if (fn) fn(msg)
            for (let entry of tmp) {
              obj.panel.gridData.push(entry)
            }
            // 给gridData加上序号
            obj.panel.gridData.map((val, i) => {
              val.myNum = i + 1
            })
            obj.$store.dispatch({type: 'changePanelData', val: obj.panel.gridData})
            obj.nowData = obj.panel.gridData
            obj.panel.hasData = true
            if (obj.panel.gridData.length === 0) obj.panel.hasData = false
          })
        }
    
        // 如果穿进来的是没list的
        if (msg.length >= 0) dataHanding(msg)
        else if (msg.list.length >= 0) dataHanding(msg.list)
        // 为瀑布流做准备
        obj.lastId = obj.hostIds
      })
    }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 野原の向日葵 普通会员 1楼

      瀑布流请求的问题通常与请求的次数有关。你可以通过以下几种方式来解决:

      1. 避免请求多次:你可以检查请求的次数,如果请求次数超过限制,那么你可以使用重试机制,比如设置重试间隔时间,或者在请求失败后重试。

      2. 使用并发请求:如果你正在处理大量的请求,那么你可能需要考虑使用并发请求来提高处理效率。你可以使用像Java的ExecutorService和ThreadPoolExecutor这样的工具来实现并发请求。

      3. 使用负载均衡:如果你正在处理大量的请求,那么你可能需要考虑使用负载均衡来分发请求。你可以使用像Nginx这样的负载均衡器来实现负载均衡。

      4. 优化请求的发送:如果你的请求发送速度过慢,那么你可能需要优化请求的发送。你可以考虑使用缓存来存储请求的响应,或者使用队列来异步发送请求。

      5. 使用协议限制:如果你的请求发送速率超过协议限制,那么你可能需要使用协议限制来限制请求速率。例如,你可以使用HTTP/2的Pong协议来限制请求速率。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部