Mam obiekt JSONRespond o klasie Respond, który przyjmuje jako argument adres URL, wywołuje metodę getOptions i chciałbym przekazać jako wartość wynik funkcji , ale ta niestety nie chcę tego przyjąć. Właściwie nigdy nie przechodzi do tej lini.
var JSONRespond = new Respond('JS/lib/XML/options.json');
var Options = JSONRespond.getOptions();
console.log("TEST" + Options.options[0].params)// a to się nigdy nie pojawia.
Konstruktor klasy Respond.
var Respond = function(URL){
this.requestURL = URL;
}
Metoda getOptions()
Wszystko działa ładnie i pięknie , fetch się wykonuje, przekazuje dalej obiekt JSON(testy to potwierdzają), ale jakby utyka w tym miejscu lub nie wraca do głównego wątku(szczerze to nie wiem). Tak czy siak, by uniknąć coraz to dalszych zagniedżeń. Wolałbym zakończyć pracę na tym wątku. Pytanie jak funkcji wyżej zwrócić wartośći.
Respond.prototype.getOptions = function(){
var JSON;
var headers = new Headers();
headers.set('Content-Type', 'application/json');
headers.set('Method','GET');
var request = new Request(this.requestURL, headers);
fetch(request).then(function (response){
return response.json();
}).then(function(respondJSON){
JSON = respondJSON;
console.log("Test obiektu przekazanego dalej:" + respondJSON.options[1].params); //
console.log("Test obiektu JSON:" + JSON.options[0].params);
return JSON; // próbowałem coś takiego, ale nic z tego ;/.
})
}
EDIT: Zapomniałem, że oczekiwanie JSON-a trochę trwa, a nie kazałem mu czekać( choć, dalej mnie to dziwi, że nie rzucił żadnym Undefined), a więc by to działało poprawnie trzeba użyć obiecanek, a więc:
var Options = JSONRespond.getOptions();
Options.then(function( JSON ) {
console.log(JSON);
Czyli zrób coś, następnie coś innego.