gpt4 book ai didi

javascript - 多个 HTTP 客户端请求不存储 session 数据

转载 作者:行者123 更新时间:2023-12-03 05:57:11 25 4
gpt4 key购买 nike

我有一个问题,我想知道代码是否可能太快以至于创建单独的 session ID,让我详细说明一下。我有两个独立的 HTTP 客户端,它们依次执行(请参见下面的代码)。我遇到的奇怪问题是在第二个 HTTP 客户端请求中我所做的就是检索一些 session 数据。然而,有时它会很好地返回数据,而有时 session 信息未定义,这会导致无穷无尽的问题。一旦我删除第二个 Http 客户端,问题就不再发生。

一些研究,我认为这可能是异步客户端的问题,我可以在下一个操作中重复使用相同的 Http 客户端变量,并且 session 数据将被保留吗?任何建议或知识将不胜感激。

this.login = function(username, password, loaded, failed, incorrect) {
var xhr = Ti.Network.createHTTPClient({
onload : function(e) {
var response = this.responseText;
switch(response) {
case "1":
loaded();
break;
case "0":
incorrect();
break;
case "2":
incorrect();
break;
case "3":
incorrect();
break;
default:
failed();
}
},
onerror : function(e) {
failed(e);
},
timeout : 5000,
validatesSecureCertificate : false
});
xhr.open('POST', this.url, true);
xhr.send({
'action' : 'login',
'email' : username,
'password' : password,
});

var getdb = Ti.Network.createHTTPClient({
onload : function(e) {
var response = this.responseText;
Ti.App.Properties.setString('name', response);
},
onerror : function(e) {
failed(e);
},
timeout : 5000,
validatesSecureCertificate : false
});
getdb.open('POST', this.url, true);
getdb.send({
'action' : 'get_name',
'device' : 'mobile'
});

};

最佳答案

您的问题是您同时执行两个调用。所以执行顺序未知。您需要做的是在第一个完成后调用第二个。为此,您需要在第一个 http 调用的回调中添加第二个 http 调用。

为了使您的代码更有条理,我建议使用函数!使其更具可读性。

function doBothCalls(){
doFirstCallFunction(function(){
doSecondCallFunction();
}
}

然后,doFirstCallFunction 获取一个回调函数,您应该在第一个回调函数进入 http 回调后调用该回调函数。

关于javascript - 多个 HTTP 客户端请求不存储 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com