- 20
- 0
list//页面展示数组
cacheList//缓存数组,ajax
setTimeout((=>{
list.shift();
if(cacheList.length<=8){
this.getData();
}
const arr = this.state.cacheList.splice(0,num);
// 这一步cacheList是[]
//刚好下一步ajax成功了,cacheList.push成功了,结果cacheList应该有长度
//但是被上一步setState 进去了
list.push(...arr);
this.setState({
list,
cacheList
})
}),2000) - 共 0 条
- 全部回答
-
壹廂情願° 普通会员 1楼
在JavaScript中,异步list.push和setTimeout都可能导致列表的长度增加,然后异步list.splice的执行顺序可能会受到影响。为了解决这个问题,我们可以使用Promise和async/await语法。
假设我们有一个异步列表
list,我们想在异步异步添加一个新的元素到列表后立即调用splice方法,这可能会导致splice方法的执行顺序出现问题。我们可以使用Promise来解决这个问题:```javascript async function appendToList() { const newElement = 'Hello, world!'; return new Promise((resolve, reject) => { setTimeout(() => { list.push(newElement); resolve(); }, 1000); }); }
appendToList().then(() => { console.log(list); // 输出:["Hello, world!", "Hello, world!"] console.log(list.splice(1, 1)); // 输出:["Hello, world!"] }); ```
在这个例子中,我们使用了Promise来管理异步操作。当新的元素被添加到列表后,我们立即调用Promise的resolve方法,这将导致
splice方法立即执行。当我们调用splice方法时,它会先执行setTimeout函数,然后再执行list.push函数。这种方法可以确保
splice方法的执行顺序不会受到影响。
- 扫一扫访问手机版
回答动态

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

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

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

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

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

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

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

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

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

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