Javascript 如何使用jQuery';s承诺,以便函数不嵌套
我想我增加了一层复杂性。以下是我得到的:Javascript 如何使用jQuery';s承诺,以便函数不嵌套,javascript,jquery,promise,Javascript,Jquery,Promise,我想我增加了一层复杂性。以下是我得到的: ;(function($, window, undefined) { function download() { var local = {}; local.data = {}; local.data.method = 'getMyData'; local.dataType = 'json'; local.Promise = $.ajax('myComponent.c
;(function($, window, undefined) {
function download() {
var local = {};
local.data = {};
local.data.method = 'getMyData';
local.dataType = 'json';
local.Promise = $.ajax('myComponent.cfc', local);
local.Promise.done(PromiseDone);
local.Promise.fail(PromiseFail);
}
function PromiseDone(result) {};
function PromiseFail(myEvent) {};
})(jQuery, window);
我想做的是这样的:
;(function($, window, undefined) {
var Variables = {};
Variables.Promise = $.Deferred();
function download() {
var local = {};
local.data = {};
local.data.method = 'getMyData';
local.dataType = 'json';
Variables.Promise = $.ajax('myComponent.cfc', local);
}
Variables.Promise.done(function(result) {
});
Variables.Promise.fail(function(myEvent) {
});
})(jQuery, window);
我的目标是扁平化JavaScript,这样我的函数就不会嵌套
问:我的想法行得通吗?你真的增加了不必要的复杂性,还是一个
延迟的需要解决<代码>$。ajax
已经返回了一个承诺,因此没有理由创建另一个承诺:
;(function($, window, undefined) {
function download() {
return $.ajax({
data : {method:'getMyData'},
dataType: 'json'
});
}
var ajaxCall = download();
ajaxCall.done(function(result) {
// do something with result
});
ajaxCall.fail(function() {
// failed
});
})(jQuery, window);
天啊。返回$.ajax()。太棒了@菲利普-答案有点变了!