我在使用fetch API时如何返回JSON对象

时间:2016-06-24 13:22:14

标签: javascript json

我创建了Object,就像这样:

  var JSONRespond = new Respond('JS/lib/XML/options.json');

我想将JSON对象转换为另一个对象,例如:

var Options = JSONRespond.getOptions();
console.log("TEST" + Options.options[0].params) // doesn't working

回复课程:

var Respond = function(URL){
this.requestURL = URL;
}

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 respondJSON:" + respondJSON.options[1].params); //OK
        console.log("Test JSON:" + JSON.options[0].params); // ok too
        return JSON; //
        })

    }

我如何获得JSON对象并返回main函数?(不要使用promises,回调)。

1 个答案:

答案 0 :(得分:1)

由于getOptions本身不返回任何内容,因此您从最后一个返回的JSON然后返回'只是消失了。你可能想要回复承诺并链接另一个'然后'在它之后。类似于:

Respond.prototype.getOptions = function(){
    ...
    return fetch(request)
        .then(function (response) {
            return response.json();
        });
};

var JSONRespond = new Respond('JS/lib/XML/options.json');
var Options = JSONRespond.getOptions();
Options.then(function( JSON ) {
    console.log(JSON);
});

注意:你的意思是什么'(不要使用承诺,回调)' ? 您可以调用getOptions提供回调,然后在最后一次调用该回调'然后'。