Javascript 如何正确使用承诺/延迟模式

Javascript 如何正确使用承诺/延迟模式,javascript,jquery,Javascript,Jquery,我试图在调用第三个函数之前链接需要完成的两个函数test1和test2(首先是test1,然后是test2)。有人能帮忙吗 function test1(){ setTimeout(function() { console.log("test1"); return 1 }, 10000); } function test2(){ setTimeout(function() { console.log("test2"); return 2 }, 1

我试图在调用第三个函数之前链接需要完成的两个函数test1和test2(首先是test1,然后是test2)。有人能帮忙吗

function test1(){
setTimeout(function() {
      console.log("test1");
      return 1
}, 10000);
}

function test2(){
setTimeout(function() {
      console.log("test2");
      return 2
}, 10000);

}


var promise1 = test1().promise();
var promise1 = test2().promise();

when(
promise1,
promise2
).then(function(a,b) {
console.log("test1 and test2 done");
});

您的代码中没有使用任何promise框架

一种方法是像使用jQuery一样使用jQuery

函数test1(){
//创建延迟对象
var deferred=$.deferred()
setTimeout(函数(){
//taks完成后,将承诺标记为已解决
延期。决议(1);
}, 2000);
//返回承诺对象
延迟返回。承诺();
}
函数test2(){//创建一个延迟对象
var deferred=$.deferred()
setTimeout(函数(){
//taks完成后,将承诺标记为已解决
延期。决议(2);
},1000);//返回承诺对象
延迟返回。承诺();
}
var promise1=test1();
var promise2=test2();
$.when(promise1,promise2)。然后(函数(a,b){
log(“test1和test2完成”,a,b);
});

我可以问另一个问题吗。假设test2()的执行依赖于test1()之前的成功完成。我如何创建某种执行链?