Javascript函数按顺序运行
我对函数的排序有一些问题 我有两个功能。其中两个是http请求 什么样的情景 在第一个请求中,我得到一些响应,在这个响应中,我得到一些字符串,并将其设置为某个变量 在第二个请求中,我将这个字符串添加到我的请求url中 但在设置变量时,我的第二个请求在第一个请求-响应中工作 正因为如此,我得到了变量的未定义值 我知道这是同步、异步问题,但我如何解决这个问题 这是我的变量,我将在第二个请求url的末尾添加它Javascript函数按顺序运行,javascript,function,Javascript,Function,我对函数的排序有一些问题 我有两个功能。其中两个是http请求 什么样的情景 在第一个请求中,我得到一些响应,在这个响应中,我得到一些字符串,并将其设置为某个变量 在第二个请求中,我将这个字符串添加到我的请求url中 但在设置变量时,我的第二个请求在第一个请求-响应中工作 正因为如此,我得到了变量的未定义值 我知道这是同步、异步问题,但我如何解决这个问题 这是我的变量,我将在第二个请求url的末尾添加它 var urlString = ''; 这是我的第一个请求: var requestone
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 requestone=new XMLHttpRequest();
requestone.onload=函数(){
如果(requestone.status>=200&&requestone.status<300){
var data=requestone.response;
data=JSON.parse(数据);
urlString=data.Key
}否则{
console.log('fail')
}
};
open('GET','apirl');
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();
var requesttwo=new-XMLHttpRequest();
requesttwo.onload=函数(){
if(requesttwo.status>=200&&requesttwo.status<300){
var data=requesttwo.response;
}否则{
console.log('fail')
}
};
open('GET','apirl'+urlString);
requesttwo.send();
您可以通过两种方式完成此操作,使用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();
var requestone=new XMLHttpRequest();
requestone.onload=函数(){
如果(requestone.status>=200&&requestone.status<300){
var data=requestone.response;
data=JSON.parse(数据);
requesttwo.open('GET','apirl'+data.Key);
requesttwo.send();
}否则{
console.log('fail')
}
};
open('GET','apirl');
requestone.send();
您可以通过两种方式完成此操作,使用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();
var requestone=new XMLHttpRequest();
requestone.onload=函数(){
如果(requestone.status>=200&&requestone.status<300){
var data=requestone.response;
data=JSON.parse(数据);
requesttwo.open('GET','apirl'+data.Key);
requesttwo.send();
}否则{
console.log('fail')
}
};
open('GET','apirl');
requestone.send();
使用javascript承诺或异步/等待使用javascript承诺或异步/等待在第一个请求中发送。谢谢在第一个请求中就发现它起作用了。谢谢