请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,我看你博客有个异步更新的代码,有个疑问

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()

正在回答 回答被采纳积分+3

1回答

双越 2022-06-11 08:20:19

如何实例化这个promise”—— 这句话我没看懂。

Promise.resolve() 本身就是返回一个实例化的 p ,这有啥可疑问的呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 自胜者强123 #1
    老师,这是你博客的代码const p = new Promise(),没有传参
    const p = Promise.resolve(),这个是我改的
    回复 有任何疑惑可以回复我~ 2022-06-11 14:43:33
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号