MVC中模型的异步更新

Asynchronous update of model in MVC

本文关键字:异步 更新 模型 MVC      更新时间:2023-09-26

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

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

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

JavaScript不像其他语言那样具有等效的"wait"。我相信我们会看到一个"yield"关键字,它将在未来对我们有所帮助。目前,许多编码程序都依赖于Promises或Deferred模式。

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

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

  • jQuery ajax调用可以同步完成,检查参数
  • 超时,睡眠不是一个答案,因为它会阻塞
  • 延迟并不总是一个答案,尤其是如果你不喜欢"然后"、"当"回调技术