异步辅助函数

时间:2016-12-01 02:55:45

标签: javascript asynchronous

我无法弄清楚如何构造一个辅助函数,当辅助函数是异步的时,它可以用作条件的一部分。

我已经定义了两个Parse Cloud Code函数,用于检查用户是否拥有有效帐户并以稍微不同的方式响应,所以我想我创建了第三个帮助函数,只检查用户是否有有效的帐户。这就是三个函数的样子:

// Check if user account is active before allowing saves.
Parse.Cloud.beforeSave("Item", function(request, response) {
  if (isActiveUser(request.user)) {
    resonse.success();
  }
  else {
    response.error("Inactive user");
  }
});

// Checks if calling user account is active.
Parse.Cloud.define("isActive", function(request, response) {
  if (isActiveUser(request.user)) {
    response.success(true);
  }
  else {
    response.success(false);
  }
});

// Returns true if user is active.
function isActiveUser(user) {
  var query = new Parse.Query(User);
  query.first({
    success: function(user) {
      if (user !== null && typeof user === 'object') {
        return true;
      }
      else {
        return false;
      }
    }
  });
}

isActiveUser函数的意图是返回true或false,但正如Jaromanda指出的那样,它根本不会返回任何内容。我不确定如何以更加事件驱动的方式构建它,这种方式实际上是可行的。我希望有人可以帮助这个试图闯入JS的PHP程序员:)

1 个答案:

答案 0 :(得分:1)

如何在函数中使用回调 - “isActiveUser()”

重写为:

function isActiveUser(user, callback) {
  var query = new Parse.Query(User);
  query.first({
    success: function(user) {
      if (user !== null && typeof user === 'object') {
        callback(" Active ",true);
      }
      else {
        callback(" Non-Active ",false);
      }
    }
  });
}

并调用此函数:

...
isActiveUser( your_user_item , function(err,flag){
  if(flag == true){
      // This User is active
  }
  else{
      // Non active , show some msg
  }
});