我在订购我的功能时遇到了一些问题。
我有2个功能。其中两个向http请求。
什么情况?
在第一个请求上,我得到一些响应,在此响应中,我得到一些字符串并将其设置为某些变量。
在第二个请求上,我将此字符串添加到我的请求url中。
但是当我设置变量时,我的第二个请求在此之前的工作在第一个请求响应中。
因此,我得到了变量的不确定值。
我了解这是同步,异步问题,但是我如何解决此问题?
这是我的变量,我将在第二个请求URL的末尾添加
。var urlString = '';
这是我的第一个请求:
var requestone = new XMLHttpRequest();
requestone.onload = function () {
if (requestone.status >= 200 && requestone.status < 300) {
var data = requestone.response;
data = JSON.parse(data);
urlString = data.Key
} else {
console.log('fail')
}
};
requestone.open('GET', 'apiurl');
requestone.send();
这是我的第二个请求:
var requesttwo = new XMLHttpRequest();
requesttwo.onload = function () {
if (requesttwo.status >= 200 && requesttwo.status < 300) {
var data = requesttwo.response;
} else {
console.log('fail')
}
};
requesttwo.open('GET', 'apiurl' + urlString);
requesttwo.send();
答案 0 :(得分:2)
您可以通过2种方式(使用Promise)或将第二个请求集成到request1内:
var requestone = new XMLHttpRequest();
requestone.onload = function () {
if (requestone.status >= 200 && requestone.status < 300) {
var data = requestone.response;
data = JSON.parse(data);
requesttwo.open('GET', 'apiurl' + data.Key);
requesttwo.send();
} else {
console.log('fail')
}
};
requestone.open('GET', 'apiurl');
requestone.send();