在vue2.0中,请求数据的函数都是异步执行函数(没有同步请求),但有时必须保证该数据请求回来以后判断状态后再执行下面的代码,怎样实现呢?
-
可以等待状态后再顺序执行代码
-
方法一:设置计时器,当计时器隔多久后再执行下面的函数
- 缺点:很难确定计时器需要定义的时间,可能会随项目的数据大小等发生改变。
-
方法二:使用es6的promise对象(不知道的可以先看这里:promise 简书)解决
- promise是用来传递异步操作的消息的,它有三种Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)。一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise 对象的状态改变,只有两种可能:从 Pending 变为 Resolved 和从 Pending 变为 Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。就算改变已经发生了,你再对 Promise 对象添加回调函数,也会立即得到这个结果。所以可以使用promise返回对象的then方法来判断状态再添加需要执行的同步代码,如果失败可以使用resolve()或reject()方法来选择继续执行下面的代码。
-
很好用,试试,加油!