2016-06-24 20 views
-1

我創建的對象,這樣返回JSON對象:我怎麼能當我使用獲取API

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

而且我想raturn 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對象並返回主函數?(不使用承諾,回調)。

+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提供回調,然後在最後一個'then'中調用該回調。

+0

Sry,我忘了我可以使用承諾主要功能^^。我的意思是?我在想,我無法返回「主」線程。所以,不喜歡這樣看:t – ShiroUmiazake