यहाँ मैं अपने सिर को वादों के इर्द-गिर्द लपेटने की कोशिश कर रहा हूँ। पहले अनुरोध पर मैंने लिंक्स का एक सेट प्राप्त किया। इस पर 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
फ़ंक्शन विशिष्ट है, और केवल पैरेंट फ़ंक्शन पर लौटता है, और यह कि आप एक async विधि से नहीं लौट सकते।