ノード モジュールを作成しており、ノード コールバックと 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 番目の例が探しているものを取得する実際の方法ですか?