美文网首页
异步操作问题 async/await 解决

异步操作问题 async/await 解决

作者: Gopal | 来源:发表于2019-03-12 18:26 被阅读0次

问题描述

在执行任务的时候,我执行了两个操作,删除操作,然后去刷新页面。原本这个逻辑是没有问题的,但是发现有时候页面还是显示数据,但是删除的接口是显示已删除成功。那是为什么呢?

鲁迅说过:

偶现的问题,记得考虑是否为异步操作导致的

发现刷新列表的操作并没有在删除请求成功后执行!所以这就有了以上的问题!

那么我们该怎么去解决呢?

解决过程

其实在平时我们有很多中解决方法

解法一
最“蠢”的方法,就是将后续的操作放在 ajaxsuccess 函数中,这样确保它的执行时有顺序的。

这种方法的缺点也是很让人头疼的,假如有很多很多很多的 ajax 请求的时候,那岂不是要嵌套很多很多很多层,代码的可读性就非常差了。

解法二
Promise 。和这个类似的是 jQuery 中的 deferred

参考:
深入理解 JavaScript 异步系列(2)—— jquery的解决方案

解法三
async/await

async deleteBubble(args) {
    await deleteBubble.call(this, { id: args.$prevReturn.id }) // 执行了异步操作,使用 await 进行等待
}

相关文章

网友评论

      本文标题:异步操作问题 async/await 解决

      本文链接:https://www.haomeiwen.com/subject/opnnpqtx.html