关于并发

1.前端

按钮的重复点击问题,特别是要向后台发送异步请求更改资源.
解决方法,可以利用锁机制,定义一个资源,有请求过来后锁住资源.

tag = false;
onChange = () => {
        if(this.tag){
            return;
        }else{
            this.tag=true;
        }

        for(let i=0;i<answers.length;i++){
            if(answers[i].option.length==0){
                Alert.alert("第"+(i+1)+"题未作答,请选择答案!");
                this.tag=false;
                return false;
            }
        }
        let str = JSON.stringify(answers).toString();
        this.commons.apis.riskEvaluationApi.saveRiskEvaluation(str).then((p:String)=>{
            this.commons.apis.riskEvaluationApi.riskEvaluationResult().then((m:RiskEvaluationResultModel)=>{
                this.props.navigator.push({
                    title:"风险测评",
                    screen: "RiskEvaluation.RiskEvaluationFinishScreen",
                    passProps: {userRiskLevel:m,isTest:true},
                });
            }).default();
        }).default(()=>{
            this.tag = false;
        })
    };
2.后端

1.如果是一台机器,可以写同步代码块或是锁.
2.多台机器可以实现一个分布式锁,如用redis的setNx方法.
3.还可以在数据库方面实现乐观锁,数据库记录添加版本号字段,更新的时候拿查询出的版本号和数据库中的版本号对比,如果相同则更新,不同则返回提示.

3.架构

架构上可以用kafka等消息队列,将请求串行化.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容