如何优雅地处理用户的误操作引起的多次请求

){return resolve(res.data)}return reject(res)}})})}//通用get请求方法exportfunction httpGet (data){return http(data)}//通用post请求方法exportfunction httpPost (data){ data.method ='POST'return http(data)}// 该方法适用于串行请求的apiexportfunction lockRequest (data, fn){ let ajaxKey = getLockRequestKey(data)if(hitRequestKey(ajaxKey)){throwError('重复提交请求:'+ ajaxKey)} addRequestKey(ajaxKey)returnnewPromise(function(resolve, reject){ fn(data).then(function(data){ removeRequestKey(ajaxKey)return resolve(data)}).catch(function(error){ removeRequestKey(ajaxKey)return reject(error)})})}

整体思路就是统一所有请求的入口,然后以API请求的地址,参数,请求类型(get,post)等组装为唯一key缓存起来。这样就能知道某个请求的完成状态,当第二个相同的请求过来时,我们可以根据上一次的状态来判断下一步的操作。

angular和微信小程序的例子看这里,欢迎大家交流更多好的解决方案。