老师,我看你博客有个异步更新的代码,有个疑问
来源:4-6 vue如何监听数组变化

自胜者强123
2022-06-11
const queue = new Set() // 任务队列。Set 可自动去重,这很重要,否则重复添加 fn 将导致重复执行
let isFlushing = false // 标记是否正在刷新
const p = Promise.resolve()
function queueJob(job) {
queue.add(job) // 添加任务
// 如果还没有开始刷新,则启动
if (!isFlushing) {
isFlushing = true // 标记为刷新中
p.then(() => {
try {
queue.forEach(job => job())
} finally {
isFlushing = false // 标记为刷新完成
queue.length = 0 // 清空任务队列
}
})
}
}
这是我改的,可以实现异步更新
const p = Promise.resolve()
这是你博客里的,没有传参数,我想知道Vue官方是如何实例化这个promise,
const p = new Promise()
我之前想的是这样
const p = new Promise(resolve => setTimeout(resolve()))
但是想起需要处理完微任务之后->DOM更新之后->然后再来处理这个callback,然后再去DOM更新,相当于两次DOM更新了
所以后面想到的是这样实例化的,不知道vue是怎么实例化的
const p = Promise.resolve()
写回答
1回答
-
双越
2022-06-11
“如何实例化这个promise”—— 这句话我没看懂。
Promise.resolve() 本身就是返回一个实例化的 p ,这有啥可疑问的呢?
012022-06-11
相似问题