0

ユーザーが認証されているかどうかを確認するために使用するアクセス関数の例を次に示します。

access = function(id, user_id, callback) {
  docs.findOne({
    _id: id
  }, function(err, doc) {
    if (doc.user.indexOf(user_id) != -1) {
      callback("authenticated")
    } else {
      callback();
    }
  });
}

このようなコールバックパターンと同じように使用します。

access(id, user, function (status) {
  if (status == 'authenticated') doSomething()
})

アクセス関数を使用するたびにコールバックのステータスを確認する必要があるため、書くのは少し退屈だと思います。コールバックで認証が想定されるように、アクセス関数を使用するより良い方法が欲しいです。このようなもの?

access(id, user, function () {
  doSomething()
}).err(function () {
  doSomethingElse()
})
4

3 に答える 3

0

それを分割しましょう:

access(id, user, function () {
  doSomething()
}).err(function () {
  doSomethingElse()
});

と同じ意味

var ret = access(id, user, function () {
  doSomething()
});

ret.err(function () {
  doSomethingElse()
})

そのため、err(...)意図したものではなく、常に呼び出されます。

どうですか

var Access = function ()
{
   this.errorHandler = null;

   this.registerErrorHandler = function (errh)
   {
      this.errorHandler = errh;

...
   this.authenticate = function (...)
   {



       // if not authenticated
       this.errorHandler(....)

アイデアとして?this.errorhandlerは、ハンドラーなどの配列でもあります。

それを呼び出すには、次のことを行う必要があります。

myAccess = new Access();
myAccess.registerErrorHandler(xyz);
myAccess.authenticate(.....);
于 2013-05-29T20:29:28.777 に答える