所以,我希望我的第一级捕获是处理错误的.有没有办法把我的错误传播到第一个trap ?

参考代码,不起作用(尚未):

Promise = require('./framework/libraries/bluebird.js');

function promise() {
    var promise = new Promise(function(resolve, reject) {
        throw('Oh no!');
    });

    promise.catch(function(error) {
        throw(error);
    });
}

try {   
    promise();
}
// I WANT THIS CATCH TO CATCH THE ERROR THROWN IN THE PROMISE
catch(error) {
    console.log('Caught!', error);
}

推荐答案

有了新的async/await syntax,你可以做到这一点.请注意,在编写本文时,并非所有浏览器都支持这一点,您可能需要使用babel(或类似的东西)来传输代码.

// Because of the "async" keyword here, calling getSomeValue()
// will return a promise.
async function getSomeValue() {
  if (somethingIsNotOk) {
    throw new Error('uh oh');
  } else {
    return 'Yay!';
  }
}

async function() {
  try {
    // "await" will wait for the promise to resolve or reject
    // if it rejects, an error will be thrown, which you can
    // catch with a regular try/catch block
    const someValue = await getSomeValue();
    doSomethingWith(someValue);
  } catch (error) {
    console.error(error);
  }
}

Node.js相关问答推荐

如何使用多个OR参数从多个集合聚合

如何使用MongoDB在Node.js 中向数组中添加项?

如果我加入另一个公会且我的​​机器人已在其中,欢迎消息发送错误

GitLab 依赖扫描需要源代码中的 package-lock.json 才能执行

如何修复我的 NodeJS SSE 写入函数以在后续调用中更新 HTML?

Prisma,只有一个用户的行可以有真值,@@unique(userId, isActive)

我正在try 在公共目录中使用 Express.js 项目部署 Angular 静态构建

结合后端(Express)和前端(Angular)路由

如何防止 Chrome 通过 Selenium 崩溃?

等待不在 Express.js 中处理 res.app.render

如何删除mongodb中嵌套数组中所有出现的数组元素

将环境变量从 GitHub 操作传递到 json

仅显示用户在 Reactjs 中使用服务器端发布的帖子是 Node Js、Mongodb

在Go中,编写非阻塞代码有意义吗?

mongoose 模式中的嵌套对象

为什么模块级返回语句在 Node.js 中起作用?

安装Node.js 安装n 安装Node.js?

fs.createWriteStream 不会立即创建文件?

使用 Node.js 我得到错误:EISDIR,读取

要求('babel/register')不起作用