Javascript fetch, catch 永远运行

标签 javascript try-catch fetch

会发生什么:如果我使用 fetch..catch 并调用另一个函数。在下一个函数中,如果有任何崩溃。它会被 last catch 捕获。这将继续下去,所以如果下一个函数崩溃,它仍然会在 fetch..catch 中被捕获

我想要什么:在调用 myExternalFunction() 时,我想从 fetch 抛出的 try..catch 中“断开连接”。

fetch('mystuff.url')
   .then((data)=>{
      myExternalFunction();
   })
   .catch((e)=>{
      // all future errors will come here
   })

myExternalFunction(){
    // This error will be caught by fetch..catch 
    // we don't want that
    crash();
}

Fiddler example to try it

最佳答案

您不想链接您的catchthen then,但要将它们保持在同一级别:

fetch(...).then(successCallback, failCallback)

或者:

const p = fetch(...);
p.then(successCallback);
p.catch(failCallback);

const p = Promise.resolve('foo');
p.then(() => { throw new Error('noooooo') });
p.catch(() => console.error('caught'));

不同之处在于 fetch().then().catch()捕获fetch promise 或then promise ;而上述两种方法仅将 failCallback 应用于 fetch promise。

关于Javascript fetch, catch 永远运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49509408/

相关文章:

javascript - 当我通过 jQuery/javascript 传递条件单选按钮时,为什么我的 CSS 样式表没有反射(reflect)出来?

javascript - Jsonp 帮助打印数组中的每个项目

java - 在 try/catch block 中捕获异常后继续执行循环

linq - 为什么 Fetch 应该是 Linq Nhibernate 查询中的最后一个子句

json - 从网络服务中获取 json 数组

javascript - HTML5 游戏 - 如何使图像仅在特定的 x-y 坐标之间渲染?

javascript - Gulp:如何按顺序组合任务?

c++ - throw关键字的使用

javascript - try {} without catch {} 可以在 JavaScript 中使用吗?

json - 将 json 文件中的静态数据导入 Backbone 模型