在这里,我试图绕过Promise.Here在第一个请求时获取一组链接。在下一个请求时,我获取第一个链接的内容。但是我想在返回下一个Promise对象之前进行延迟。所以我使用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);});
3 回答

斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
较短的ES6版本的答案:
const delay = t => new Promise(resolve => setTimeout(resolve, t));
然后您可以执行以下操作:
delay(3000).then(() => console.log('Hello'));
添加回答
举报
0/150
提交
取消