为了简化我的问题,我对代码进行了一些修改。我现在能够从回调函数中获取值,我现在想将这些数据传递给变量。
的Javascript
如何让PostInformation返回args?
function AjaxRequest(callback) {
var hasErrors = false;
dojo.xhrPost({
url: 'hello',
content: SomeData,
load: function (formErrors) {
//preform some operation
//set hasErrors to true
hasErrors = true;
if (typeof callback === "function") callback(hasErrors);
},
error: function (e) {
console.log(e + ' page not posted error');
}
});
}
function PostInformation() {
try {
AjaxRequest(function (args) {
console.log('The hasErrors is ' + args);
return args;
});
} catch (e) {
console.log(e);
}
}
答案 0 :(得分:2)
您在发送请求时调用handleServerResponse
,而不是在回调中。它应该是:
var doesErrorsExist = postToServer(function() {
handleServerResponse(containers, function (args) {
return args;
});
});
但这仍然无法工作 - 异步函数永远不会向调用者返回一个值,因为在函数返回后操作完成之前,该值不会存在。
我还没有试图弄清楚你想要做的所有事情的逻辑,所以我没有具体的建议如何解决这个问题。我想如果你重读你所链接的问题,你应该获得更多的见解。
答案 1 :(得分:0)
经过一些测试,我意识到我只需要AjaxRequest函数在函数末尾返回数据并声明一个等于AjaxRequest的变量,并使用回调函数返回其值。下面是我的代码。
如果此解决方案不合适,请发表评论。
function AjaxRequest(callback) {
var hasErrors = false;
dojo.xhrPost({
url: 'hello',
content: SomeData,
load: function (formErrors) {
//preform some operation
//set hasErrors to true
hasErrors = true;
//if (typeof callback === "function") callback(hasErrors);
},
error: function (e) {
console.log(e + ' page not posted error');
}
});
return hasErrors;
}
function PostInformation() {
try {
var results = AjaxRequest(function (args) {
//console.log('The hasErrors is ' + args);
return args;
});
return results;
} catch (e) {
console.log(e);
}
}