Владислав
Нет. Сперва second(), а потом first()
И всё-таки ваша неправда, вызовется first, потом second, потом функция внутри таймаута внутри first. Но если вам тем не менее очень надо вызвать коллбэк после таймаута из first то как вариант это можно сделать примерно так:
function first() {
return new Promise(function(resolve) {
setTimeout(function() {
console.log('first');
resolve();
}, 500);
});
}
function second() {
...
}
first().then(second)
хотя промисы это уже отдельная история :)