여기에서 약속에 대해 머리를 감싸려고합니다. 여기에서 첫 번째 요청에 링크 세트를 가져오고 다음 요청에 첫 번째 링크의 내용을 가져옵니다.하지만 다음 약속 객체를 반환하기 전에 지연을 만들고 싶습니다. 그래서 사용합니다. 그것에 setTimeout. 그러나 그것은 나에게 다음과 같은 JSON 오류를 제공합니다 ( without setTimeout() it works just fine
)
SyntaxError : JSON.parse : JSON 데이터의 1 행 1 열에 예기치 않은 문자가 있습니다.
왜 실패했는지 알고 싶습니다.
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
던지는 곳 ? setTimeout
하나의 then
콜백 이 있는지 여부가 이전 then
콜백 의 호출에 영향을 미친다 는 사실을 믿기가 어렵습니다 .
return
에만 부모 함수에 함수를 특정하고, 수익을, 그리고 당신이 비동기 방식에서 반환 할 수 있습니다.