JSFiddle - React, Tailwind, and code Playground
JavaScript
var doA = function(resolve, reject) {
//Aくんの作業(1秒で終わる)
console.log(new Date().toLocaleString() + " 板の買い物開始");
setTimeout(function() {
console.log(new Date().toLocaleString() + " 板の買い物完了");
resolve();
}, 1000);
};
var doB = function(resolve, reject) {
//Bくんの作業(5秒で終わる)
console.log(new Date().toLocaleString() + " 釘の買い物開始");
setTimeout(function() {
console.log(new Date().toLocaleString() + " 釘の買い物完了");
resolve();
}, 5000);
};
var doC = function(resolve, reject) {
//Cくんの作業(3秒で終わる)
console.log(new Date().toLocaleString() + " 板の切断開始");
setTimeout(function() {
console.log(new Date().toLocaleString() + " 板の切断完了");
resolve();
}, 3000);
};
var doD = function(resolve, reject) {
//Dくんの作業(3秒で終わる)
console.log(new Date().toLocaleString() + " 組み立て開始");
setTimeout(function() {
console.log(new Date().toLocaleString() + " 組み立て完了");
resolve();
}, 3000);
};
// Aくん、Bくんはすぐ買い物に行く
var promiseA = new Promise(doA);
var promiseB = new Promise(doB);
// Aくんの買い物後、Cくんが作業する
promiseA.then(function(){
var promiseC = new Promise(doC);
// BくんとCくんの作業が終わり次第Dくんが作業する
Promise.all([promiseB, promiseC]).then(function() {
var promiseD = new Promise(doD);
});
});