首先说明,这个问题出于自己写的一个小demo,很简单的数据添加操作,起初就是添加一条数据,成功之后刷新页面。后面觉得,刷新页面体验不好,就改成成功之后异步加载数据了,界面体验好了一些。
但是突然的就在想,动态追加的数据其实填写表单的时候就已经有了,等待成功的这个过程和我想要追加到元素其实关系并不是很大,并不需要等它成功之后给我返回数据我才能追加元素,之所以等成功只是为了等一个“信号”,表示成功加入到库里了。
那么,我进而就在想, 我们是不是可以不用等待成功之后再加载数据,直接填写表单,点击确定后就将数据动态追加到列表,异步请求成功后不做操作(给提示也可以),如果是失败就必须提示。
其实我觉得是可以的,虽然这种方式有一些限制。
先附上图:
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
重点回答以下几个问题,
1. 这个小demo其实就是加一条数据,没有必要等成功之后再追加元素,点击按钮后就可以追加,时间、用户等信息可以不通过后台返回,JS可以去取当前时间(可以适当忽略JS时间和后台真正请求时的时间差),用户名可以界面上取到,内容就是文本框了,完全可以动态追加到下面的容器中,可能会问如果添加失败了怎么办(这是这里要说的重点问题),个人觉得,添加失败的原因有可能是程序逻辑错误、或者服务器突然跪了、或者网络不好等因素,但综合着看添加失败的几率是很小的,我们没太大必要因为这些因素必须等待成功后才追加上去,一是程序的性能不好一定得解决,不能因为这个做“预判断”。二是这种概率小,如果这个添加需要等待10秒(这里理论上不可能,但如果是一个复杂的添加业务就有可能),那我觉得与其等待10秒为何不优先加载出来,可能添加失败后追加的东西因为没存进去也不会显示,但这种体验应该比等待10秒体验好,因为每一件事情都等成功之后才做的话,这中间可能会有一些我们不需要等待的无用时间。所以,想问,如果一个添加要等10秒,你愿意等吗。
2. 业务不同,优化程序有别的方式。这里其实主要是想探讨一下做法问题,具体问题具体分析,在软件编码的过程中,是否可以用这种方式,在数据可以从界面取的情况下,不等成功,直接操作,失败给予提示,操作过的DOM因为没有数据支撑刷新页面后自然会撤销。
突然想到的一点东西,有很多的局限性。