gpt4 book ai didi

node.js - waterfall 函数没有重复的一次尝试/捕获(使用异步 waterfall )

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:38 25 4
gpt4 key购买 nike

我正在使用异步 waterfall ,我有一个关于 try/catch 错误的问题。

我不想用一个全局 try/catch 来回避这种语法方法,并且不能通过函数重复 try/catch :

async.waterfall([
function (callback) {
try {
this.foo() // Ok
this.bar() // Method bar doesn't exist so without try/catch node will crash
} catch(ex) {
//print err
}
},
function (callback) {
try {
//Again & again
} catch(ex) {
//print err
}
}
//... function() with try catch ...
], function(err, result) {
//Do something
})

最佳答案

如果您寻求更强大的错误处理系统;试试这个:

var async = require('async');


function callbackErrorHandler(fn, callback) {
try {
fn()
} catch (err) {
callback(err);
}
}

async.waterfall([
function(callback) {
callbackErrorHandler(function() {
throw new Error('error1');
}, callback);
},

function(callback) {
callbackErrorHandler(function() {
throw new Error('error2');
}, callback);
}
],
//final
function(err, result) {
console.log(err);
});


/**
* Using Promises
*/
var async = require('async');

//promises
var Promises = require('bluebird');

function callbackErrorHandler(fn) {
return new Promises(function(resolve, reject) {
try {
resolve(fn()); //should return something
} catch (err) {
reject(err);
}
});
}

async.waterfall([
function(callback) {
callbackErrorHandler(function() {
throw new Error('error1');
})
.error(callback)
},

function(callback) {
callbackErrorHandler(function() {
throw new Error('error2');
})
.error(callback)

}
],
//final
function(err, result) {
console.log(err);
});

关于node.js - waterfall 函数没有重复的一次尝试/捕获(使用异步 waterfall ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com