连续性(Continuations)

不幸的是,自从 UI 中有太多的列表,明确的管理就需要大量的重复性样板代码。

我们可以通过推迟一些函数的执行,进而把一些模板移出业务逻辑。比如,使用“柯里化”(JavaScript 中的 bind)。然后我们可以从核心的函数外面传递 state,这样就没有样板代码了。

下面这样并没有减少样板代码,但至少把它从关键业务逻辑中剥离。

  1. function FancyUserList(users) {
  2. return FancyBox(
  3. UserList.bind(null, users)
  4. );
  5. }
  6. const box = FancyUserList(data.users);
  7. const resolvedChildren = box.children(likesPerUser, updateUserLikes);
  8. const resolvedBox = {
  9. ...box,
  10. children: resolvedChildren
  11. };