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

问题描述 投票:0回答:1

我正在为我的项目使用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);
    }
javascript node.js asynchronous callback async.js
1个回答
0
投票

最后,我得到了一篇博文,解决了我的问题https://blog.risingstack.com/mastering-async-await-in-nodejs/我希望它也能帮助别人。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.