无需等待节点js即可触发回调

时间:2016-07-11 13:00:16

标签: node.js mongodb

您好我是节点的新手我正在尝试创建注册功能...它会检查用户名是否存在以及其他一些验证..但它不是等待从mongodb获取结果来检查用户是否存在或不.. 回调很早就被解雇..请帮助我如何按照我想要的方式进行回调

User rust_like_new(void) {
    User u;
    UserInit(&u);
    return u;
}

int main(int argc, char *argv[]) {
    User u = rust_like_new();
    User *u2 = malloc(sizeof(User));
    *u2 = u;
    UserDoSomething(u2);
}

1 个答案:

答案 0 :(得分:1)

这是另一个不了解回调和异步例程如何在JavaScript中工作的情况。函数 not 等待异步函数的完成。在继续之前,您可能希望阅读它。以下是一些相关问题:

要解决您的特定问题,必须将对loginValidatevalidateMobilecallback的异步调用链接到各自的回调函数中。以下是我将如何做到这一点(请注意,这种方法是快速失败的,一旦我们知道用户无效就不会触发更多验证步骤):

exports.registerValidate = function(data, callback) {
    var isValid = true;
    var userData = [];
    var errors = [];
    for (var key in data) {
        userData.push(data[key]);
    }
    var nam = Object.keys(data);

    this.loginValidate(userData[0], function(data) {
      if (data) {
        callback(false);
        return;
      }

      util.validateMobile(userData[2], function(bool) {
        callback(bool && !util.validateEmail());
      });
    });
}