语境
单页/ajax 网络应用
基本代码结构
LocationManager(负责更新浏览器哈希并将应用程序位置切换到不同的磁贴)
页面/图块流
基本信息 > 家庭信息 > 车辆信息 > 购买选项 > 查看订单 > 输入付款并提交
问题
当用户从采购选项导航到查看订单时,会进行长时间(5-8 秒)的服务调用来计算订单详细信息。在呼叫解决后,回调旨在将用户导航到“查看订单”页面。问题是,如果用户在此期间点击返回并返回家庭信息,一旦呼叫解决,他们将被“自动”带到查看订单。非常尴尬的用户体验。
限制
取消通话不是一种选择。需要一个解决方案来处理导航。
当前提议的实施
在进行 calculateOrder 调用之前保存“currentLocation”。将回调中的“currentLocation”作为expectStartingPoint 传递给setLocation 方法。内部 setLocation 方法if(intendedStartingPoint === Locationmanager.currentLocation) {//Navigate}
总而言之,如果用户在通话进行时更改了位置,那么在通话解决后,我们将不会导航,因为用户不希望此时导航到 Review Order。
这行得通,对吧?
抓住
我们在应用程序中有很多地方在回调中调用 setLocation 以进行长时间运行的调用。这意味着我将不得不使用一个新参数--expectedStartingPoint 来更新所有的 setLocation 调用。虽然这对我来说很有意义,但它似乎确实有可能变得有点混乱。
关于如何清理和集中它的任何想法?