Javascript 转义NodeJS中的多个嵌套函数

Javascript 转义NodeJS中的多个嵌套函数,javascript,node.js,promise,es6-promise,Javascript,Node.js,Promise,Es6 Promise,我的Javascript代码如下所示: function someFunction() { // Code somePromise().catch(err => { console.log(err); }); // Mode Code } 如果somePromise()被拒绝,我想退出somePromise().catch和someFunction()。我尝试使用return,但这只允许我逃避somePromise()。catch。是否有任

我的Javascript代码如下所示:

function someFunction() {
    // Code
    somePromise().catch(err => {
        console.log(err);
    });
    // Mode Code
}

如果
somePromise()
被拒绝,我想退出
somePromise().catch
someFunction()
。我尝试使用
return
,但这只允许我逃避
somePromise()。catch
。是否有任何函数允许我打破嵌套循环?

您可以通过使用
async
/
wait
来实现这一点:

function async someFunction() {
    // Code
    try {
        await somePromise();
    } catch (err) {
        console.log(err);
        return; // aborts further execution
    }
    // More Code
}

有关详细信息,请参阅。

Async/await解决了问题,但了解它解决问题的原因很重要

承诺是一种存储连续性的机制。传递给
然后
catch
的函数存储在承诺中,并在承诺得到解决时执行

要在不使用
async
/
wait
的情况下解决此问题,您只需返回承诺,然后使用
执行承诺未拒绝时应执行的任何代码:

function someFunction() {
    // Code
    return somePromise()
      .then(result => {
        // More Code
      })
      .catch(err => {
        console.log(err);
      });
}

这本质上就是
async
/
等待的
de sugars。Async/await是围绕状态机的语法糖,它为您连接这些连续性。

不抓住一些承诺如何?(删除.catch())不幸的是,这不是我可以使用的选项。