我有一个 scrolltobottom() 函数,它在每个函数执行后运行。

如何重构代码以便我不需要在任何地方输入 scrolltobottom()

最好不使用 Jquery。

async function initBot () {
  let botui = BotUI('homepage-bot', {
    vue: Vue
  })

  let scrolltobottom = () => {
    let ele = document.getElementById('botui')
    document.body.scrollTop = ele.clientHeight
  }

  await botui.message.bot({"Hello"})
  await scrolltobottom()

  await botui.message.bot({"Do you like apple or orange?"})
  await scrolltobottom()

  await botui.message.button({"Orange", "Apple"})
  await scrolltobottom()
}

最佳答案

你可以创建一个装饰器函数

function decorateWith(targetFn, fn){
  return function(){
    targetFn.apply(this, arguments);
    fn();
  }
}

[ botui.message.bot,
  botui.message.button ]
  .forEach(fn => decorateWith(fn, scrolltobottom));

关于javascript - 在每个函数被调用后执行一段代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45852138/

10-09 15:27