Ember.js REST Ajax成功与错误

Hao*_* Li 3 ajax ember.js ember-data

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

hash.success = function(json) {
  Ember.run(null, resolve, json);
};

hash.error = function(jqXHR, textStatus, errorThrown) {
  Ember.run(null, reject, jqXHR);
};
Run Code Online (Sandbox Code Playgroud)

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

int*_*xel 5

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

是的,因为ember使用了jQuery,所提到的功能只是普通的jQuery方法.

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

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

  • 如果请求失败,则调用错误回调选项.它接收jqXHR,一个指示错误类型的字符串,以及一个异常对象(如果适用).一些内置错误将提供一个字符串作为异常对象:"abort","timeout","No Transport".

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

我还应该提一下,success回调是在最近被替换的jQuery版本中,done并且被标记为已弃用,如下所示:

弃用注意:自jQuery 1.8起,不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调.要准备最终删除的代码,请使用jqXHR.done(),jqXHR.fail()和jqXHR.always().

但不要担心,因为我猜想,直到jQuery彻底删除了这些方法,ember团队肯定已经赶上了新的回调版本.

最后,如果你想知道你的电话是什么,Ember.run你可以看看这里.但基本上它确保传递的目标和方法在RunLoop内运行,同时确保任何延迟的操作,如绑定和视图更新,最后刷新.这个所谓的答案Runloop也非常丰富.

希望能帮助到你.