3

ノード モジュールを作成しており、ノード コールバックと Promise API の両方をサポートできるようにしたいと考えています。私が最も良いと聞いているライブラリ (主に最速) はbluebirdです。したがって、いくつかのドキュメントを読み、bluebird を使用している他のライブラリを調べた後、ノード コールバックと Promise API の両方をサポートするメソッドを取得するには、これが最もクリーンな方法であると考えました。

this.isAllowed = function(role, resource, permission, callback) {
  var isAllowedAsync = bluebird.promisify(isAllowed);
  return isAllowedAsync(role, resource, permission).nodeify(callback);
};

ただし、このコードでは、コールバックは実行されません。さらに調査した後、私はこれを試しました:

this.isAllowed = function(role, resource, permission, callback) {
  return new bluebird(function (resolve, reject) {
    resolve(isAllowed(role, resource, permission));
  }).nodeify(callback);
};

このコードでは、ノード コールバックと Promise API の両方が機能します。

参考までに、これは isAllowed メソッドです。

var isAllowed = function(role, resource, permission) {
  if(!lists[role] || !lists[role][resource]) {
    return false;
  }

  return lists[role][resource].indexOf(permission) !== -1;
};

最初のコード例で何か間違ったことをしているのですか、それとも 2 番目の例が探しているものを取得する実際の方法ですか?

4

1 に答える 1