async.waterfall()在将回调传递给bcrypt.hash()时中断

时间:2019-07-15 16:19:31

标签: node.js callback async-await bcrypt

我是异步/等待新手,并且已经设置了基本的node.js服务器,该服务器处理用于用户注册的表单数据。下面是我的代码

async.waterfall([async function(callback){ //Method 1

            const hash = await bcrypt.hash(password, 10/*, () => {  //breakpoint
                    console.log("Hash Generated Successfully");
            }*/);
            return hash;

        }, function(hash, callback){ //Method 2
            console.log(`The value of passed arg is: ${hash}`);
            callback(null, 'success');

        }], function(err, result){
            if(err){
                throw err
            }
            else {
                console.log(result);
            }
        });

Method 1中,如果我不提供对bcrypt.hash()的回调,则代码可以正常工作,并打印哈希值。但是,如果我确实提供了回调,则会得到以下输出: The value of passed arg is: undefined。 所以,我在这里有两个问题。 1)为什么async.waterfall()在提供对bcrypt.hash()的回调时中断? 2)除了回调以外,还有什么其他方法可以处理错误?

1 个答案:

答案 0 :(得分:0)

如果计划将匿名函数作为参数,则必须将必需的参数传递给bcrypt回调函数。例如:

const hash = await bcrypt.hash(password, 10, (err, hash) => {  // Added err, hash params.
                console.log("Hash Generated Successfully");
        });
return hash;