Esperaba que el código generara: QQ d QQ e QQ f ["a","b","c","d","e","f"] pero no es así, la salida no está en secuencia quiero, me gustaría que test() espere en medio del bucle cuando haga test2() y obtenga la respuesta, imprima QQ y el elemento en t2, ¿cómo puedo resolverlo?
$('#sr').click(function() { test(); }); var test = function test() { var t1 = ["a", "b", "c"]; var t2 = ["d", "e", "f"]; t2.forEach(function(item, index) { console.log(test2("QQ")); console.log(item); t1.push(item); }); console.log(t1); } var test2 = function test2(x) { setTimeout(function() { return x; }, 1000); } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input value="show result" type="button" id="sr" />