async.series / async.waterfall在post方法中有效吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了async.series / async.waterfall在post方法中有效吗?相关的知识,希望对你有一定的参考价值。
我在post方法中使用了async.series,但它似乎不起作用,当调用post请求时页面显示404找不到。
router.route('/brandinsert')
.post((req, res, next) => {
console.log("inside post"); //terminates here
async.series({
one: (callback) => {
uploadImageOne(req, res, (err) => {
console.log('Inside uploadImageOne');
callback(req, res, err);
});
},
two: (callback) => {
uploadImageTwo(req, res, (err) => {
console.log('Inside uploadImageTwo');
callback(req, res, err);
});
},
}, (req, res, err) => {
console.log('Inside req,res,err'); //does not reach here
if(err){
console.log('error :' + err); //does not reach here
if (err == 'Error: imageExtensionError') {
res.json({
status: false,
msg: "File has invalid extension"
});
} else if (err == "Error: File too large") {
res.json({
status: false,
msg: "File size exceed the limit,Allowed limit is 3 MB"
})
} else {
console.log("err else section:" + err);
res.json({
status: false,
msg: genericErrorMessage
})
}
}else{
console.log("Inside else of insert");
let brandHeaderImg = req.body.brandHeaderImg;
let brandLogoImg = req.body.brandLogoImg;
let errorArray = [];
let msg = null;
//insert images into db
}
});
})
我没有得到我做错了什么,有人可以帮忙吗?我对node.js相当新,如果问题看起来很傻,请原谅我。
答案
异步库中的回调需要调用为:
callback(err, arg1, arg2, arg3);
首先使用err
参数,然后使用其他可选参数。如果没有错误并且您希望继续处理,那么您将传递null
以获取错误:
callback(null, arg1, arg2, arg3);
仅供参考,javascript开发的趋势是“宣传”您拥有的任何异步操作(创建一个返回promise而不是使用普通回调的包装器),然后使用promise和async/await
功能进行异步控制流和错误处理。我强烈建议用这种方式编写新代码,而不是使用传统回调的异步库。
node v10甚至包括一个fs
库的promisified版本,越来越多的节点内部现在使用promises和async/await
。
以上是关于async.series / async.waterfall在post方法中有效吗?的主要内容,如果未能解决你的问题,请参考以下文章
Node.js:async.series 中的 forEach
嵌套在 async.eachSeries 循环中的 async.series 终止提前发送 POST 响应