Javascript 没有回调或承诺的异步函数的错误处理

Javascript 没有回调或承诺的异步函数的错误处理,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我正在使用一个第三方库,它执行一些异步操作,但需要尝试捕捉错误。它没有回调,也没有异步函数的承诺。有人知道任何库或捕获这些错误的方法吗?我正试着做这样的事情 var asyncLib = require( 'asyncLib' ); try { asyncLib.doSomething(); } catch( e ) { //I want to catch if doSomething throws some error // But it doesn't because

我正在使用一个第三方库,它执行一些异步操作,但需要尝试捕捉错误。它没有回调,也没有异步函数的承诺。有人知道任何库或捕获这些错误的方法吗?我正试着做这样的事情

var asyncLib = require( 'asyncLib' );

try {
   asyncLib.doSomething();
} catch( e ) {
    //I want to catch if doSomething throws some error
    // But it doesn't because it's using async resources.
}

如果您想处理那些不是通过常规渠道出现的错误,您可以尝试在域中运行代码。这将允许捕获未经处理的错误事件:

var d = require('domain').create();
d.on('error', function(err) {
  console.error(err.stack);
});
d.run(function() {
  yourCode();
});
或者,如果这是域错误处理无法处理的问题:

process.on('uncaughtException', function (err) {
  console.error(err.stack);
});

当然,您不希望像我的示例中那样只记录并继续,但您可以理解。

这个函数没有回调,或者不是承诺?它是冒泡出来的一个未捕获的异常吗?是的,它既不是一个承诺,也不是一个回调,你想抓住哪个错误???每一个错误?是什么错误重要吗?作为参考,它与未找到的文件相关。“它没有回调,也没有异步函数的承诺”,那么我的建议是使用不同的库。这个问题非常模糊。。。如何确定异步操作后发生的情况?你能控制这些代码吗?