如何使用 async.js 简化 Node.js 中的回调代码

How to simplify callback code in Node.js using async.js

我正在为我的项目使用 MEAN 技术。在 Node.js 中我们需要使用 callbacks。这里我有一个更新数据库中用户条目的函数。在存储到数据库之前,我需要先验证数据然后执行一些检查。通过这样做,我的代码将变得非常复杂。我听说 async 图书馆。

有人可以建议我如何降低这段代码的复杂性吗?我不太了解异步,但它真的能解决我的问题吗?

我还必须执行一些其他检查,例如授权。而且我不想写回调地狱。

非常感谢任何建议。

感谢您的宝贵时间。

    function updateUser(user_id, userData, cb){
      let response = {};

      //validate user data
      validate(userData, function(isPassed, validationResult){
        if(isPassed){
          //validate user id
          validateUserId(user_id, function(isValid){
            if(isValid){
              db.findById({ _id: user_id}, function(err, user){
                if(err){
                  response.status = 'error';
                  response.data = err;
                  cb(response);
                } else {
                  user.save(userData, function(err, numOfRow){
                    if(err){
                      response.status = 'error';
                      response.data = err;
                      cb(response);
                    } else {
                      response.status = 'success';
                      response.data = numOfRow;
                      cb(response);
                    }
                  })
                }
              })
            } else {
              response.status = 'error';
              response.data = 'Provided id is not valid';
              cb(response);
            }
          });
        } else {
          response.status = 'validationError';
          response.data = validationResult;
          cb(response);
        }
      });

    }

    function validate(data, cb){
      // checks some conditions here
      cb(false, [errors]);
    }

    function validateUserId(id, cb){
      // checks some conditions here
      cb(false);
    }

终于有一个博客post解决了我的问题https://blog.risingstack.com/mastering-async-await-in-nodejs/希望对其他人也有帮助

谢谢。