为了账号安全,请及时绑定邮箱和手机立即绑定

在承诺链上使用setTimeout

在承诺链上使用setTimeout

SMILET 2019-09-21 15:10:17
在这里,我试图绕过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 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

.then(() => new Promise((resolve) => setTimeout(resolve, 15000)))


查看完整回答
反对 回复 2019-09-21
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

较短的ES6版本的答案:


const delay = t => new Promise(resolve => setTimeout(resolve, t));

然后您可以执行以下操作:


delay(3000).then(() => console.log('Hello'));


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 346 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号