我试图使用require.all调用其他js文件中的函数这些参数
Create = require("CreateView"); var params = { username : username.value , password : password.value}; var type ="POST"; var URL = "<a href="https://localhost/post_auth.php">https://localhost/post_auth.php</a>"; var Result; </li>
的调用函数
b2.addEventListener('click',function(e)
{
alert(params.username);
if (username.value != '' && password.value != '')
{
Result=Login.Request(params,type,URL);
}
else
{
// warning alert
alert("Username/Password are required");
}
if (Result.logged == true)
{
alert("Welcome " + Result.name + ", Please answer the following question");
Create();
}
else
{
alert(Result.message);
}
});
当我尝试将参数传递给LoginRequest时。
function Request(params,type,url){
var Result;
var loginReq = Titanium.Network.createHTTPClient();
loginReq.open(type,url);
loginReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
//send parameters
loginReq.send(JSON.stringify(params));
loginReq.onload = function()
{
var json = this.responseText;
Result = JSON.parse(json);
alert (Result.logged);
alert (Result.name);
};
return Result;
};
exports.Request = Request;
调用return undifiend对象,我的错在哪里?
答案 0 :(得分:0)
那是因为你正在进行异步通话。
当你调用loginReq.send()
时,将进行调用,并且它将继续执行其余的代码而无需等待异步调用完成,这就是函数返回undefined
的原因
要解决此问题,您可以进行同步调用而不是异步调用(这是一个糟糕的坏主意),或者您可以重构代码,也许LoginRequest可以返回loginReq实例而不是结果