请问怎样使fun1运行完毕之后再运行fun2?

请问怎样使fun1运行完毕之后再运行fun2?
fun1应该如何改写?谢谢了! http://jsfiddle.net/7431zu0s/

<更新>

另外,如果代码是fun1更新n值,fun2中的useN()使用n值,下面的代码能否保证fun1一定先于fun2执行完毕?

var n;
var fun1 = function() {
    return $.Deferred(function(defer) {
        isConnectable(url,fun(connectable){
                n = connectable;//更新n
                defer.resolve();
        })
    });
}
var useN = function() {
    //使用n
    if(n)
        //...
    alert("fun2 is done");
};
var fun2 = function() {
    useN();
}
$.when(fun1())
.done(fun2)
.fail(function(){ alert("error!"); });

var fun1 = function(){
    var tasks = function(){
        alert("fun1 is done");
        };
        setTimeout(tasks,10000);
}
var fun2 = function(){
    var tasks = function(){
        alert("fun2 is done");
        };
        setTimeout(tasks,5000);
}

$.when()
.done(fun1())   
.done(fun2())
.fail(function(){ alert("error!"); });
阅读 1.8k
2 个回答
var fun1 = function () {
  var tasks = function () {
    alert("fun1 is done");
  };
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve();
      tasks();
    }, 10000);
  });
};
var fun2 = function () {
  var tasks = function () {
    alert("fun2 is done");
  };
  setTimeout(tasks, 5000);
};

fun1().then(fun2);
新手上路,请多包涵
var fun1 = function() {
    return $.Deferred(function(defer) {
        var tasks = function() {
            alert("fun1 is done");
            defer.resolve();
        };
        setTimeout(tasks, 10000);
    });
}
var fun2 = function() {
    var tasks = function() {
        alert("fun2 is done");
    };
    setTimeout(tasks, 5000);
}

$.when(fun1()) 
.done(fun2)
.fail(function(){ alert("error!"); });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题