javascript - JS异步编程该怎么写更优雅?

查看:148
本文介绍了javascript - JS异步编程该怎么写更优雅?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

需求很简单:项目的登陆功能通过ajax请求登陆多个系统,如果登陆成功的话清空密码框。
但由于是异步的请求,是否成功的判断都必须写在callback里面,导致重读代码冗余,难道就没有更优雅的写法吗?

代码

function logOn(userName,password){
    //支付系统
    $.ajax({
        url: paymentUrl,
        success: function(data) {
            //判断如果登陆成功就清空密码框
            if(data.success){ clearPassword();} 
        }
    });

    //反洗钱系统
    $.ajax({
        url: amlUrl,
        success: function(data) {
            //判断如果登陆成功就清空密码框        
            if(data.success){ clearPassword();} 
        }
    });
    
    //核心系统
    $.ajax({
        url: coreUrl,
        success: function(data) {
            //判断如果登陆成功就清空密码框        
            if(data.success){ clearPassword();} 
        }
    });    
    
    //本来想定义外部变量来判断,统一处理,但不能适应异步的情况
    /*
    if(successFlag){
      clearPassword();
    }
    */
}

解决方案

var ajax1 = $.ajax(url);
var ajax2 = $.ajax(url);
var ajax3 = $.ajax(url);
$.when(
    ajax1, ajax2, ajax3
).then(function(data){
    console.log(data);
    clearPassword();
});

这篇关于javascript - JS异步编程该怎么写更优雅?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆