jQuery多次修改了解决方案

时间:2017-12-30 10:58:58

标签: javascript jquery

jQuery的:

var dfd = $.Deferred();

$(document).on('click', '#Signup', function() {
    email_check('Signup');
    mobile_check('Signup');
    dfd.done(function(){
        alert("Hello World!")
    })
})

function email_check(Signup){
    dfd.resolve();
}

function mobile_check(Signup){
    dfd.resolve();
}

大家好,我想在延迟对象解析函数email_check和mobile_check时解决。然后执行alert语句。我怎么能这样帮助我。

1 个答案:

答案 0 :(得分:2)

使用$.when()等待承诺(延期)得到解决

  

提供一种基于零个或多个Thenable对象执行回调函数的方法,通常是表示异步事件的Deferred对象。

$(document).on('click', '#Signup', function() {
  console.log("Signup...");

  $.when(email_check('Signup'), mobile_check('Signup'))
    .done(function(){
      console.log("All done!")
    });
});

function email_check(Signup){
    var d = $.Deferred();
    
    setTimeout(function() {
    	console.log("email_check resolved");
    	d.resolve();
    }, 1000);
    
    return d;
}

function mobile_check(Signup){
    var d = $.Deferred();
    
    setTimeout(function() {
    	console.log("mobile_check resolved");
    	d.resolve();
    }, 2000);
    
    return d;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" id="Signup">Signup</button>