2018-01-24 promise与beforeRouteLeave的结合使用

今天的认真度70%。

最近的工作状态有点不是太好,生病太久,容易犯困和疲倦。

在做6.2的收尾工作,以及官网的收尾工作。

今天解决了一个bug,就是promise与beforeRouteLeave的结合使用时遇到的一点小问题。

场景:

修改了表格(或其它数据),在未保存的情况下点击了返回或后退,总之是要离开本页面前,利用钩子函数进行拦截,提示:“是否需要保存”。点击‘是’,保存成功后再离开;点击‘否’,跳过保存直接离开。

这里的难点在于,怎样判断是否保存成功,因为向后台发送保存请求毕竟是异步的。

如果用嵌套来做,就用不到iview的Modal.confirm()方法,会增加步骤的复杂度。

而如果要用Modal.confirm(),最好使用promise。

之前虽然一直有用到,但是总是无论保存是否成功,总是很快的离开了页面,后来才知道:

promise.then(callback()) 的callback()其实也是接收参数的,这个参数就是promise对象返回的值,如果在保存不成功时我们让它返回false,再结合beforeRouteLeave钩子函数中的next(false)方法,就能让路由留在原地,不发生跳转。

你可能感兴趣的:(2018-01-24 promise与beforeRouteLeave的结合使用)