Во-первых, если вы хотите передать дополнительные параметры в функцию обратного вызова setTimeout, то это делается следующим образом
setTimeout(callback, time, param1, param2, ...)
Теперь в своем фрагменте кода оберните вторую функцию setTimeout в обещание и верните этообещаю.Также, если вы хотите, чтобы небольшая задача была асинхронной, оберните ее также в обещание и верните это обещание.
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log("Inside heavy task...");
resolve("Heavy task was a success");
}, 5000);
})
.then(function(value) {
var p2 = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log("Inside medium task...");
resolve(value);
// reject("Medium task failed !");
}, 3000);
});
return p2;
})
.then(function(value) {
console.log("Inside small task...");
console.log("From small task : " + value);
})
.catch(function(reason) {
setTimeout(function(){
console.log("Inside error task...");
console.log("Failed due to "+ reason);
}, 1000);
});
console.log("Some other tasks...");
Надеюсь, это полезно:)