JavaScript函数按顺序运行

时间:2019-03-19 09:19:19

标签: javascript function

我在订购我的功能时遇到了一些问题。

我有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();

1 个答案:

答案 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();