0

i have some problem with ordering my functions.

i have 2 function. Two of them to http requests.

what a scenario?

on first request i get some response and in this response i'm getting some string and set it to some variable.

on second request i'm adding this string to my request url.

but my second request working before then in first request response when i set my variable.

because of that i'm getting undefined value of my variable.

I understand this is sync, async problem but how i can resolve this issue ?

it's my variable which i will add end of the second request url.

var urlString = '';

this is my first request:

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

this is my second request:

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();
user3348410
  • 2,733
  • 10
  • 51
  • 85

1 Answers1

2

You can do this in 2 ways, using promise, or integrate the second request inside the 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();
jalanga
  • 1,456
  • 2
  • 17
  • 44