Di sini saya mencoba untuk membungkus kepala saya di sekitar promise. Di sini, pada permintaan pertama saya mengambil satu set tautan. Dan pada permintaan berikutnya saya mengambil konten tautan pertama. Tetapi saya ingin membuat penundaan sebelum mengembalikan objek promise berikutnya. Jadi saya menggunakan setTimeout padanya Tapi itu memberi saya kesalahan JSON berikut ( without setTimeout() it works just fine)
SyntaxError: JSON.parse: karakter yang tidak diharapkan pada baris 1 kolom 1 dari data JSON
saya ingin tahu mengapa gagal?
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.parsemelempar? Saya merasa sulit untuk percaya bahwa apakah ada panggilan balik setTimeoutdalam satu thenmempengaruhi panggilan di panggilan thenbalik sebelumnya .
returnadalah fungsi khusus, dan hanya mengembalikan ke fungsi induk, dan Anda tidak dapat kembali dari metode asinkron.