美文网首页
effect.scheduler 功能

effect.scheduler 功能

作者: sweetBoy_9126 | 来源:发表于2023-08-11 14:31 被阅读0次
  • effect.spec.ts
  it("scheduler", () => {
    // 1. 通过 effect 的第二个参数给定一个 scheduler 的 fn
    // 2. effect 第一次执行的时候 还会执行 fn
    // 3. 当响应式对象 set update 不会执行 fn 而是执行 scheduler
    // 4. 如果说当执行 runner 的时候,会再次执行 fn
    let dummy;
    let run: any
    const scheduler = jest.fn(() => {
      run = runner
    })
    const obj = reactive({foo: 1})
    const runner = effect(() => {
      dummy = obj.foo
    }, {
      scheduler
    })
    expect(scheduler).not.toHaveBeenCalled()
    expect(dummy).toBe(1)
    obj.foo++
    expect(scheduler).toHaveBeenCalledTimes(1)
    expect(dummy).toBe(1)
    run()
    expect(dummy).toBe(2)
  })
  • effect.ts
class ReactiveEffect {
  private _fn: any;
+  scheduler: any;
+  constructor(fn, scheduler?: any) {
    this._fn = fn
+    this.scheduler = scheduler
  }
  run() {
    // 把实例对象赋值给 activeEffect
    activeEffect = this
    return this._fn()
  }
}
export function trigger(target,key) {
  let depsMap = targetMap.get(target)
  let dep = depsMap.get(key)
  for (const effect of dep) {
+    if (effect.scheduler) {
+      effect.scheduler()
+    } else {
 +     effect.run()
+    }
  }
}
export function effect(fn, options: any = {}) {
+  const _effect = new ReactiveEffect(fn, options.scheduler)
 _effect.run()
 return _effect.run.bind(_effect)
}

相关文章

  • 敏捷漫画#82-功能!功能!功能!

    功能!功能!功能!(Features, Features, Features) 作者评论: 不要让自己成为一个功能...

  • 功能

    功能 函数是执行特定任务的自包含代码块。你给一个函数一个名字来标识它做了什么,这个名字用来“调用”函数在需要时执行...

  • 功能。

    Never,ever expect hackers to be able to read closed propr...

  • @功能

    由于 @ 是在回复中进行的,所以在回复的函数中添加此功能; 这里为什么添加 Model = Model 就不得而知...

  • 功能

    。哦工作

  • 功能

    厨房正中梁上挂着条咸腊鱼,去年腊月腌制的,已经四个月了。 老妈:这一段青黄不接缺菜,要不取下剁泡软了顶两天。 老爸...

  • 功能

    同样是刷子 有的用来刷牙 有的用来刷碗 有的用来刷鞋 有的却只能用来刷马桶

  • 功能

    功能(function):智能体如何工作?实体(embodiment):它们是用什么做的?互动(interacti...

  • 如何找到期望(功能)需求?

    产品功能包括基础功能、期望功能、亮点功能、无差别功能、反向功能。不同功能不同对策 ◆基础功能必做,要留足资源。 ◆...

  • 【469】家庭教育为孩子的人生奠基

    P56-65 家庭教育的功能:如认知功能、参照功能、熏陶功能、强化功能、筛选功能以及监督功能等。 ...

网友评论

      本文标题:effect.scheduler 功能

      本文链接:https://www.haomeiwen.com/subject/zdstmdtx.html