js 中setTimeout()执行顺序

<button onclick="btn()">点击</button>

<script>
  function btn(){
    console.log('1');

    setTimeout(()=>{
      console.log('bbb');
    },2000);
    
    console.log('2');
  }

将参数1的代码写在里面时,执行的结果是打印 1 ,2 最后打印bbb。这种是理想状态下该这样操作。但是将参数1的代码封装成另一个函数调用时就不一样了

<button onclick="btn()">点击</button>

<script>
  function btn(){
    console.log('1');

    setTimeout(fu(),2000);

    console.log('2');

    function fu(){
      console.log('bbb');
    }
  }

此时打印的结果就是  1  bbb  2   。不是应该打印1  2  然后等待2秒再打印吗?为什么不一样了

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^