Ici, j'essaye de faire des promesses, ici, à la première demande, je récupère un ensemble de liens, et à la demande suivante, je récupère le contenu du premier lien.Mais je veux faire un délai avant de renvoyer le prochain objet de la promesse. setTimeout dessus, mais cela me donne l'erreur JSON suivante ( without setTimeout() it works just fine
)
SyntaxError: JSON.parse: caractère inattendu à la ligne 1 colonne 1 des données JSON
je voudrais savoir pourquoi cela échoue?
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
jette-t-il? J'ai du mal à croire que le fait qu'il y ait un rappel setTimeout
dans un then
affecte l'appel dans le then
rappel précédent .
return
est spécifique à la fonction et renvoie uniquement à la fonction parente, et que vous ne pouvez pas retourner à partir d'une méthode asynchrone.