dav*_*avy 0 javascript jquery jquery-deferred
我有以下代码和一个模块
var def = $.Deferred();
$.getJSON("http://localhost:62588/api/Values/getXMLData")
.done(function(json){
def.resolve($.parseJSON(json));
});
return def;
Run Code Online (Sandbox Code Playgroud)
然后,我必须从另一个模块调用它,以便在调用处理返回的数据之前完成.
repository.getUserPolicies().done(function (userPolicies) {
process(userPolicies);
});
Run Code Online (Sandbox Code Playgroud)
这很好用但我还不太明白延迟对象是如何工作的.
我已经读过你可以使用getJSON的延迟对象,但不确定这是否正是我在这里做的?
我想知道这种方法有什么缺点吗?
可以更优雅地完成吗?
谢谢
不,这不是一个很好的用途$.Deferred,因为$.getJSON已经有一个内置的延迟对象,在更新版本的jQuery中增加了对promises等的支持.
您可以使用内置的延迟对象,只返回ajax调用,并done()直接将函数附加到该函数:
var repository = {
getUserPolicies: function() {
return $.getJSON("http://localhost:62588/api/Values/getXMLData");
}
}
repository.getUserPolicies().done(process);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |