Я не уверен, что правильно понял ваш вопрос, но это больше того, что вы ищете?
function fn1(callback) {
setTimeout(() => {
console.log('hello');
}, 2999);
callback();
}
function fn2() {
setTimeout(() => {
console.log('goodbye');
}, 3000);
}
fn1(function() {
fn2();
setTimeout(function() {
console.log("completed");
}, 3001)
});
если это так, то вы должны правильно установить значение тайм-аута, если вы хотите, чтобы они печатались в таком порядке, помните, что значения также должны быть последовательными, в противном случае вам придется установить новые тайм-ауты для fn2и следующее console.log('Completed')
, вот так:
function fn1(callback) {
setTimeout(() => {
console.log('hello');
}, 5000);
callback();
}
function fn2() {
setTimeout(() => {
console.log('goodbye');
}, 3000);
}
fn1(function() { // callback
setTimeout(function() { // timeout so fn2 fires once fn1 delay is finished
fn2();
setTimeout(function() {
// add your console.log("completed"); or third function
// here so it fires right after fn2
}, 3001); // 3000 fn2 timeout + 1ms more so it fires right after
}, 2001); // the difference between fn1 timeout - fn2 timeout + 1ms so it fires right after
});