Ember.js REST Ajax成功与错误



我想知道successerror在Ember.js RESTAdapter的ajax函数中做了什么。

hash.success = function(json) {
  Ember.run(null, resolve, json);
};
hash.error = function(jqXHR, textStatus, errorThrown) {
  Ember.run(null, reject, jqXHR);
};

我知道hash是通过AJAX发送的数据,但successerror扮演什么角色?我认为它们会基于成功或错误的AJAX响应运行,对吧?它们是在调用AJAX之前设置的,作为回调?它们是如何工作的?

但是成功和错误扮演着什么角色呢?我认为它们会基于成功或错误的AJAX响应运行,对吧?

没错,由于ember在后台使用jQuery,所以上面提到的函数只是普通的jQuery方法。

它们是在调用AJAX之前设置的,作为回调?它们是如何工作的?

至于函数本身,请参阅jQuery官方文档中的以下信息:

  • 如果请求失败,则调用错误回调选项。它接收jqXHR,一个指示错误类型的字符串,以及一个异常对象(如果适用)。一些内置错误会提供一个字符串作为异常对象:"中止"、"超时"、"无传输"。

  • 如果请求成功,则调用success回调选项。它接收返回的数据、包含成功代码的字符串和jqXHR对象。

我还应该提到,success回调在最近的jQuery版本中被done取代,并被标记为不推荐使用,如下所示:

弃用注意:jqXHR.success()、jqXHR.error()和jqXHR-complete()回调自jQuery 1.8起已弃用。要为最终删除代码做好准备,请改用jqXHR.done()、jqXHR.fail()和jqXHer.always()。

但不要担心,因为我想在jQuery完全删除这些方法之前,ember团队肯定已经赶上了新的回调版本。

最后,如果你想知道Ember.run的呼叫是什么,你可以看看这里。但基本上,它确保了传递的目标和方法在RunLoop内部运行,还确保了任何延迟的操作,如绑定和视图更新,这些操作在最后都会被刷新。Runloop上的这个SO回答也很有信息性。

希望能有所帮助。

最新更新