- 33
- 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 条
- 全部回答
-
Alone[孤身一人] 普通会员 1楼
瀑布流请求是HTTP请求的一种,它在多线程或异步环境下处理请求,每批请求之间不会阻塞,每个请求都按顺序被处理,没有顺序的重叠和重复请求。如果瀑布流请求中存在两次请求,可以考虑以下几种解决方案:
-
多线程处理:
a. 使用Promise.all()方法:Promise.all()方法可以接受一个数组作为参数,返回一个新的Promise对象,该Promise对象在所有Promise对象都返回之前都被等待。在瀑布流请求中,可以创建一个Promise对象,当所有请求完成后,通过调用Promise.all()方法,将所有Promise对象的结果合并,得到处理后的结果。
javascript Promise.all([ fetch('/api/endpoint1'), fetch('/api/endpoint2'), ]).then(results => { // 处理处理后的结果 });b. 使用async/await语法:在JavaScript中,async/await语法可以让你编写更加简洁和易读的异步代码。在瀑布流请求中,可以将请求封装为一个async函数,然后使用await关键字等待所有请求完成。然后,根据结果的处理逻辑来调用async函数。
```javascript async function瀑布流请求Handler(url) { try { const response1 = await fetch(url); const response2 = await fetch(url); // 处理处理后的结果 } catch (error) { console.error(error); } }
瀑布流请求Handler('/api/endpoint1'); 瀑布流请求Handler('/api/endpoint2'); ```
- 使用async/await和await关键字:在瀑布流请求中,可以将请求封装为一个async函数,然后使用await关键字等待所有请求完成。然后,根据结果的处理逻辑来调用async函数。在瀑布流请求中,可以使用Promise.all()方法或async/await语法来实现。
```javascript async function瀑布流请求Handler(url) { try { const response1 = await fetch(url); const response2 = await fetch(url); const result1 = await response1.json(); const result2 = await response2.json(); // 处理处理后的结果 } catch (error) { console.error(error); } }
async function瀑布流请求Handler(url) { try { const response1 = await fetch(url); const response2 = await fetch(url); const result1 = await response1.json(); const result2 = await response2.json(); const result3 = await await response3.json(); // 处理处理后的结果 } catch (error) { console.error(error); } }
瀑布流请求Handler('/api/endpoint1'); 瀑布流请求Handler('/api/endpoint2'); 瀑布流请求Handler('/api/endpoint3'); ```
- 使用Promise.allSettled()方法:Promise.allSettled()方法返回一个Promise对象,该对象在所有Promise对象都已成功处理或失败时被调用。在瀑布流请求中,可以创建一个Promise对象,当所有请求完成后,通过调用Promise.allSettled()方法,获取所有Promise对象的解决状态,得到处理后的结果。
javascript Promise.all([ fetch('/api/endpoint1'), fetch('/api/endpoint2'), ]).then(results => { results.forEach((response, index) => { if (index === 1) { const result1 = response.json(); console.log(result1); } else if (index === 2) { const result2 = response.json(); console.log(result2); } else { console.log('Unknown result:', response); } }); });以上方案的实现可以根据实际需求和业务逻辑进行选择,但都需要保证每个请求之间的异步操作顺序和处理逻辑。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
