栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript承诺-拒绝与抛出

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript承诺-拒绝与抛出

使用一个相对于另一个没有优势,但是,在特定情况下

throw
无法使用。但是,这些情况可以解决。

每当您进入promise回调时,都可以使用

throw
。但是,如果您在任何其他异步回调中,则必须使用
reject

例如,这不会触发捕获:

new Promise(function() {  setTimeout(function() {    throw 'or nah';    // return Promise.reject('or nah'); also won't work  }, 1000);}).catch(function(e) {  console.log(e); // doesn't happen});

相反,您将面临未解决的承诺和未捕获的异常。在这种情况下,您可能想要使用

reject
。但是,您可以通过两种方式解决此问题。

  1. 通过使用超时内的原始Promise拒绝功能:
new Promise(function(resolve, reject) {      setTimeout(function() {        reject('or nah');      }, 1000);    }).catch(function(e) {      console.log(e); // works!    });
  1. 通过通知超时:
    function timeout(duration) { // Thanks joews      return new Promise(function(resolve) {        setTimeout(resolve, duration);      });    }    timeout(1000).then(function() {      throw 'worky!';      // return Promise.reject('worky'); also works    }).catch(function(e) {      console.log(e); // 'worky!'    });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号