0
以下面的功能,例如:
function($data) {
$.post(
url,
{
'data': $data
},
function(response){
return response;
}
);
}
我如何才能讓家長功能:function($data) { ... }
返回response
?
由於腳本的性質,我無法將我的其餘邏輯放入回調函數中。 (見下文)
var methods = {
'email' : function(field) {
var value = field.val();
var response = false;
field.addClass("loading");
$.post(
ajaxData.url,
{
'action':'validate_form',
'value': value,
'method': field.data('method')
},
function(response){
return response;
}
).complete(function() {
field.removeClass("loading");
});
},
'password' : function(field) {
var value = field.val();
var response = {};
if (value.length < 8) {
response.result = false;
response.message = 'Your password must be a minimum of 8 characters';
} else {
response.result = true;
response.message = false;
}
return response;
},
'verify_password' : function(field, dependancies) {
var value = field.val();
var response = {};
if (value != dependancies["password"].val()) {
if (!dependancies["password"].val() || !value) {
return false;
}
response.result = false;
response.message = 'Passwords do no match';
} else {
response.result = true;
response.message = false;
}
return response;
}
}
凡methods
每個屬性是其可被調用的函數並且return
值在腳本以後使用。
var response = methods[field.data('method')](field, field.data('dependancies'));
基於異步回調編程的本質就是這樣,你沒有選擇,只能從做回調的工作。換句話說,您不能像描述它那樣獲得返回值。也許你可以在其他函數中將函數調用包裝到你的方法中,或者類似的東西。 – Pointy 2012-07-18 15:23:57