switer / switer.github.io

Personal homepage
https://switer.github.io
5 stars 0 forks source link

Facebook 的 Flux 库中,WaitFor 方法如何实现回调的同步等待 #21

Open switer opened 9 years ago

switer commented 9 years ago

概念:

首先要理清的是,waitFor 实现的是同步等待回调(与事件无关,只是事件处理回调方法在等待调用),容易误认为是等待异步事件触发。

原理:

waitFor 的调用方式是:waitFor(callbackToken),,在回调方法执行过程中调用。 callbackToken是具体某个回调方法的 id,调用 waitFor 的时候,会获取并调用该 id 对应的方法(仅当该方法的pending状态为false)

Dispatcher每次分发后,在调用前会把回调方法的pending状态设置为true,避免回调方法被重复执行

waitFor diagram

应用场景:

保证回调方法的串行执行顺序