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.parse
melempar? Saya merasa sulit untuk percaya bahwa apakah ada panggilan balik setTimeout
dalam satu then
mempengaruhi panggilan di panggilan then
balik sebelumnya .
return
adalah fungsi khusus, dan hanya mengembalikan ke fungsi induk, dan Anda tidak dapat kembali dari metode asinkron.