1

我有一个用 Javascript 实现的简单 MVC。View 只做一件事:捕获鼠标点击的坐标。每当用户单击时,View 都会将坐标保存在 FIFO 缓冲区中,并通知 Controller 这个新事件。作为通知的结果,控制器读取坐标并向模型询问特定于这些坐标的一些数据。这个数据只是一个简单的数字。

但是,模型实际上并没有这些数据。模型向远程服务器询问该信息。当信息(异步)到达时,模型将信息保存在永久缓冲区中,并通知控制器应根据此新信息刷新视图。

不幸的是,必须处理模型中的整个缓冲区,以便可以刷新视图(不能仅根据最后的数据刷新视图)。我的疑问是,如果在读取模型中的缓冲区以刷新视图时新数据异步到达会发生什么?我的第一个想法是为每次视图刷新制作一个完整的数据库稳定副本。

4

1 回答 1

1

JavaScript 没有与其他语言等效的“等待”。我相信我们会看到一个“yield”关键字,这将在未来帮助我们。目前,许多程序员都依赖 Promises 或 Deferred 模式。

jQuery 内置了“延迟”。http://api.jquery.com/category/deferred-object/ Chrome 和 FF 已经开始添加它。https://code.google.com/p/v8/issues/detail?id=2355

我必须承认这不是最好的答案,我只能指出一些小问题。

  • jQuery ajax 调用可以同步完成,检查参数
  • 超时,睡眠不是答案,因为它会阻塞
  • 延迟并不总是一个答案,特别是如果您不喜欢“那么”、“何时”回调技术。
于 2013-09-24T09:03:03.050 回答