在setTimeout完成执行后调用函数-Javascript

Shi*_*kur 3 javascript jquery

我有一个场景,我想在执行三个函数a(),b(),c()之后调用函数d(),这三个函数并行执行.

setTimeout(function a(){ alert("Hello A"); a()}, 3000);
setTimeout(function b(){ alert("Hello B"); b()}, 3000);
setTimeout(function c(){ alert("Hello C"); c()}, 3000);
Run Code Online (Sandbox Code Playgroud)

在完成所有函数执行后,我希望执行下面的函数d()

function d(){
console.log('hello D')
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

Ken*_*nny 6

你可以这样做

var promise1 = new Promise(function(resolve, reject) {
    setTimeout(function a(){ alert("Hello A"); resolve();}, 3000);
})

var promise2 = new Promise(function(resolve, reject) {
    setTimeout(function b(){ alert("Hello B"); resolve();}, 3000);
})

var promise3 = new Promise(function(resolve, reject) {
    setTimeout(function c(){ alert("Hello C"); resolve();}, 3000);
})

Promise.all([promise1, promise2, promise3]).then(function() {
  function d(){
     console.log('hello D') 
  }
  d(); 
});
Run Code Online (Sandbox Code Playgroud)