vue
题目1
问题:Ajax请求应该放在created里还是mounted里?
API:现成接口
jsonplaceholder
执行顺序:
执行同步任务,包括created里和mounted里面的程序,发送请求数据this.getData().then(data => console.log(data)),但是会显示pending, 意味着发了请求不一定能马上拿到数据结果,因为里面then()的异步任务还没执行,等待所有同步任务执行完毕后才能执行异步任务
额外:
Promise.then是微任务,setTimeout是宏任务,执行当前微任务在执行宏任务
同步 > 微任务 > dom渲染 >宏任务
总结:无论放created还是monnted里都可以,回调函数最后才是获取数据
题目2
问题:为什么promise比setTimeout先执行?
$container = $('#app')//DOM结构更新完毕//DOM渲染完毕(眼睛可以看到)//js里拿到的是空console.log('append前', $container.children().length);$container.append('<p>一段内容</p>').append('<p>一段内容</p>').append('<p>一段内容</p>')//js里可以拿到渲染之后的结果但没有渲染到页面(dom树)console.log('append后', $container.children().length);setTimeout(() => {alert('setTimeout start');console.log('setTimeout');alert('setTimeout end');});Promise.resolve().then(() => {alert('promise start');console.log('promise');alert('promise end');});
顺序:
dompromisesetTimeout
因为promise在页面渲染之前执行,setTimeout在页面渲染之后才执行
题目3
问题:如何将组件接收的所有props继续往下传递?
