Javascript函数按顺序运行

Javascript函数按顺序运行,javascript,function,Javascript,Function,我对函数的排序有一些问题 我有两个功能。其中两个是http请求 什么样的情景 在第一个请求中,我得到一些响应,在这个响应中,我得到一些字符串,并将其设置为某个变量 在第二个请求中,我将这个字符串添加到我的请求url中 但在设置变量时,我的第二个请求在第一个请求-响应中工作 正因为如此,我得到了变量的未定义值 我知道这是同步、异步问题,但我如何解决这个问题 这是我的变量,我将在第二个请求url的末尾添加它 var urlString = ''; 这是我的第一个请求: var requestone

我对函数的排序有一些问题

我有两个功能。其中两个是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 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承诺或异步/等待在第一个请求中发送。谢谢在第一个请求中就发现它起作用了。谢谢