异步接口取消的问题

我有一个列表,展示了一堆item,比如:
aaa
bbb
ccc
...

用户点击某个item,进入到编辑页面,可以改内容(比如把aaa改成aaa123)
点击确定后是一个网络交互。如果在网络返回结果之前,用户退出这个页面,该怎么处理?

  1. 什么也不处理,数据其实已经修改成功,但是列表展示没有变化,再次点进编辑页,依然是老数据

  2. 修改成功后,列表更新,这里:

    2.1. 用户的意图是退出修改页面不关心修改结果是否成功失败,那么就还好,数据更新了就更新了,用户知道自己刚刚修改了。
    2.2. 用户的意图是取消这次修改,那就奇怪了,明明取消了,结果还是修改成功了。
    
  3. 在修改中,不允许用户退出,要么成功,要么失败,要么超时……UI才能点,这样感觉很不科学,但是很安全,很一致

    最坏的情况是超时,要等很久UI才能交互
    
  4. 我想的另一种方案是,每个请求有个cmdId,对任意请求都有cancel接口,由服务器负责回滚,这样就能真正的取消了

阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进