问题描述
在执行任务的时候,我执行了两个操作,删除操作,然后去刷新页面。原本这个逻辑是没有问题的,但是发现有时候页面还是显示数据,但是删除的接口是显示已删除成功。那是为什么呢?
鲁迅说过:
偶现的问题,记得考虑是否为异步操作导致的
发现刷新列表的操作并没有在删除请求成功后执行!所以这就有了以上的问题!
那么我们该怎么去解决呢?
解决过程
其实在平时我们有很多中解决方法
解法一
最“蠢”的方法,就是将后续的操作放在 ajax
的 success
函数中,这样确保它的执行时有顺序的。
这种方法的缺点也是很让人头疼的,假如有很多很多很多的 ajax
请求的时候,那岂不是要嵌套很多很多很多层,代码的可读性就非常差了。
解法二
Promise
。和这个类似的是 jQuery
中的 deferred
参考:
深入理解 JavaScript 异步系列(2)—— jquery的解决方案
解法三
async/await
async deleteBubble(args) {
await deleteBubble.call(this, { id: args.$prevReturn.id }) // 执行了异步操作,使用 await 进行等待
}
网友评论