Backbone.js错误处理 - 你是怎么做到的?

Nic*_*ang 36 backbone.js

我想知道人们通常如何使用backbone.js进行错误处理.每次调用model.save(后者调用Backbone.sync)时弹出一些东西会很不错.问题是,backbone.js如何知道服务器上何时出现错误或成功?我知道它会知道是否有500个服务器错误或类似的东西(由于Backbone.sync调用jQuery.ajax,jquery知道) - 但我希望能够传递消息和其他代码以便我可以提供更有意义的错误给用户的消息.

我有一个想法,并希望得到一些反馈.我们的想法是覆盖Backbone.sync.新同步从服务器获得响应,该响应必须采用特定格式.这种格式是这样的:

ServerResponseObject:
  > ResponseCode
  > Message
  > Model
Run Code Online (Sandbox Code Playgroud)

没什么好看的,但基本上,它不是只返回普通模型,而是用一个包裹起来,ResponseCode并且Message可以向用户显示.

这是正常的做法吗?还有其他方法更好吗?

谢谢!

Jac*_*son 31

在我看来,这听起来有点复杂,至少从一开始就是这样.Backbone.sync将报告您可以在模型.save()方法中捕获的错误:

this.mymodel.save(/* ... */, {success: function(model, result, xhr)...,
                              error: function(model, xhr, options)...}
Run Code Online (Sandbox Code Playgroud)

(docs).

如果您的服务器端遵循HTTP 规范,则已提供错误代码(500- 服务器错误,404- 找不到模型,您知道..),即使服务器发送错误代码,它仍然可以发送内容(非常适合您的消息).所以你基本上已经在HTTP协议本身内置了所有参数.根据我的经验,如果您使用协议而不是在其上构建新层,则可以编写更少的代码.

error上面的回调中,您可能有很好的可能性来调用系统的其余部分并将错误发布到某些应用程序消息总线或类似程序(通过Backbones自己的事件机制或某些专用 ).