收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
1.notify
notify () { // 通知存储的依赖更新
const subs = this.subs.slice()
if (process.env.NODE_ENV !== 'production' && !config.async) {
subs.sort((a, b) => a.id - b.id)
}
// 循环watcher,发布订阅模式
for (let i = 0, l = subs.length; i < l; i++) {
subs[i].update() // 调用watcher中的update方法
}
}
dep中存储的就是watcher,每个属性一个dep
2.update
update () {
if (this.lazy) { // 计算属性
this.dirty = true
} else if (this.sync) { // 同步watcher
this.run()
} else {
queueWatcher(this) // 将watcher放入队列,this就是当前的watcher
}
}
3.queueWatcher
export function queueWatcher (watcher: Watcher) {
const id = watcher.id // 过滤watcher,每个watcher有一个id,多个属性依赖同一个watcher
if (has[id] == null) { // 如果没有就会添加进去
has[id] = true
if (!flushing) {
queue.push(watcher) // 并且将watcher放到队列中去
} else {
let i = queue.length - 1
while (i > index && queue[i].id > watcher.id) {
i--
}
queue.splice(i + 1, 0, watcher)
}
if (!waiting) {
waiting = true
if (process.env.NODE_ENV !== 'production' && !config.async) {
flushSchedulerQueue() // 会做一个清空queue的操作
return
}
nextTick(flushSchedulerQueue) // 在下一个tick中刷新watcher队列
}
}
}
4.flushSchedulerQueue
function flushSchedulerQueue () {
currentFlushTimestamp = getNow()
flushing = true
let watcher, id
queue.sort((a, b) => a.id - b.id)
for (index = 0; index < queue.length; index++) {
watcher = queue[index]
if (watcher.before) {
watcher.before() // 触发一个before方法
}
id = watcher.id
![img](https://img-blog.csdnimg.cn/img_convert/7fcba0b03062f845f3dadaadcfcb2a95.png)
![img](https://img-blog.csdnimg.cn/img_convert/3aff0179592052580da6ff7ba8c30273.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**