Qui sto cercando di avvolgere la mia testa attorno alle promesse.Qui alla prima richiesta prendo una serie di collegamenti. E alla richiesta successiva prendo il contenuto del primo collegamento.Ma voglio fare un ritardo prima di restituire il prossimo oggetto della promessa. setTimeout su di esso. Ma mi dà il seguente errore JSON ( without setTimeout() it works just fine
)
SyntaxError: JSON.parse: carattere imprevisto alla riga 1 colonna 1 dei dati JSON
vorrei sapere perché fallisce?
let globalObj={};
function getLinks(url){
return new Promise(function(resolve,reject){
let http = new XMLHttpRequest();
http.onreadystatechange = function(){
if(http.readyState == 4){
if(http.status == 200){
resolve(http.response);
}else{
reject(new Error());
}
}
}
http.open("GET",url,true);
http.send();
});
}
getLinks('links.txt').then(function(links){
let all_links = (JSON.parse(links));
globalObj=all_links;
return getLinks(globalObj["one"]+".txt");
}).then(function(topic){
writeToBody(topic);
setTimeout(function(){
return getLinks(globalObj["two"]+".txt"); // without setTimeout it works fine
},1000);
});
globalObj
.
JSON.parse
butta? Trovo difficile credere che la presenza setTimeout
di una then
richiamata in una influenzi la chiamata nella then
richiamata precedente .
return
è specifico della funzione e ritorna solo alla funzione genitore e che non puoi tornare da un metodo asincrono.