Javascript 嵌套承诺和捕获块

Javascript 嵌套承诺和捕获块,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我有下面的代码,我在其中进行了一个异步调用,如注释所示。我发现,在异步调用执行过程中出现错误的情况下,如果没有内部catch块,则最外层catch块中的console语句不会执行 因此,如果我有内部catch块,最外层catch块中的console语句将执行,但是如果我删除了内部catch块,最外层catch块中的console语句将不执行 这是预期的结果吗?如果是,为什么会发生这种情况?任何关于为什么会发生这种情况的澄清都会非常有帮助 printInfo(filter, counter

我有下面的代码,我在其中进行了一个异步调用,如注释所示。我发现,在异步调用执行过程中出现错误的情况下,如果没有内部catch块,则最外层catch块中的console语句不会执行

因此,如果我有内部catch块,最外层catch块中的console语句将执行,但是如果我删除了内部catch块,最外层catch块中的console语句将不执行

这是预期的结果吗?如果是,为什么会发生这种情况?任何关于为什么会发生这种情况的澄清都会非常有帮助

    printInfo(filter, counter).then(function(result) {
      let worksheet = tableauViz.getWorkbook().getActiveSheet().getWorksheets().get('Filter');
      //Async call 
      worksheet.applyFilterAsync('test', ['hello', 'world'], 'replace').then(promiseTimeout(filter.delay, counter), function(err) {
        throw new Error(err);
      }).then(function(counter) {
         //more processing
      }, function(err) {
        throw new Error(err);
      }).catch(function(resp){ // inner catch
      });
    }, function(err) {
      throw new Error(err);
    }).catch(function(resp){ // outer most catch
      console.error('in catch block');
      console.error(resp);
    });
catch块中的Console语句仅在代码有内部catch块进行aysnc调用时执行


谢谢。

几乎没有什么好的理由来做出承诺……为什么要第二次回调。然后到处都是只会重复的东西?我认为你的推理是不对的。可能只是误判了。您能否设置一个具有相同效果但结构简化的可运行代码段来验证该情况?