Javascript $q.defer(),AngularJS1$asyncValidators只匹配数组中的第一个对象

Javascript $q.defer(),AngularJS1$asyncValidators只匹配数组中的第一个对象,javascript,angularjs,validation,angular-schema-form,Javascript,Angularjs,Validation,Angular Schema Form,在表单中,如果在用户名输入字段中输入user1,它将被验证并输出错误消息:“username ready take”。但是,如果输入user2、user3或user4,这些都不会得到验证,而是与RegUsers.users匹配,因此表单将保持$valid而不是$invalid。我不知道为什么它不能正常工作,而且 我还在学习angularJs,这是我第一次遇到promises,因为我遵循AngularSchema表单来验证我构建的表单。如果您还没有解决这个问题,请将username和console

在表单中,如果在用户名输入字段中输入user1,它将被验证并输出错误消息:“username ready take”。但是,如果输入user2、user3或user4,这些都不会得到验证,而是与RegUsers.users匹配,因此表单将保持$valid而不是$invalid。我不知道为什么它不能正常工作,而且


我还在学习angularJs,这是我第一次遇到promises,因为我遵循AngularSchema表单来验证我构建的表单。

如果您还没有解决这个问题,请将
username
console.log(RegUsers.users[I]的内容调试到for循环中
。否则,请关闭此问题。如果您尚未解决此问题,请将
用户名
控制台.log(RegUsers.users[i]
的内容调试到for循环中。否则,请关闭此问题。
{
  key: "username",
  $asyncValidators: {
    'asynch': function(username) {
      var deferred = $q.defer();
      $timeout(function(){
        for(var i=0; i<=RegUsers.users.length-1; i++) {
          console.log(RegUsers.users[i].username);
          //If username is present in RegUsers
          if(username === RegUsers.users[i].username) {
            console.log(username + " matches " + RegUsers.users[i].username);
            deferred.reject();
          }else {
             deferred.resolve();
          }//$timeout end
        } //for loop end
      }, 200);//
       return deferred.promise;
    }// asynch function end
  }, // $asyncValidators obj end
  validationMessage:  {
    'async': "Username Already Taken"
  }//validationMessage end
},//first obj end
RegUsers.users = [
  {
    username: "user1",
    email: "user1@gmail.com",
    message: "Hello, my name is user1 "
  },
  {
    username: "user2",
    email: "user2@gmail.com",
    message: "Hello, my name is user2 "
  },
  {
    username: "user3",
    email: "user3@gmail.com",
    message: "Hello, my name is user3 "
  },
  {
    username: "user4",
    email: "user4@gmail.com",
    message: "Hello, my name is user4 "
  }
];