私はPromisifyにbluebirdを使用しようとしています。この関数にはオプションの第2引数(weight)があり、メソッドまたは全体を実行しようとしていますオブジェクト。オプションの引数でコールバックスタイルを宣言し、複数回実行する
RateLimit.prototype.incr = function(keys, weight, callback) {
var args, err, _ref, _ref1;
if (arguments.length === 2) {
_ref = [1, weight], weight = _ref[0], callback = _ref[1];
}
try {
_ref1 = this.scriptArgs(keys, weight), keys = _ref1[0], args = _ref1[1];
} catch (_error) {
err = _error;
return callback(err);
}
return this["eval"].exec(this.checkIncrFn, keys, args, (function(_this) {
return function(err, result) {
return callback(err, __indexOf.call(_this.constructor.DENIED_NUMS, result) >= 0);
};
})(this));
};
オリジナルはこちら(https://github.com/dudleycarr/ratelimit.js/blob/master/src/rate_limit.coffee)であるが、CoffeeScriptのはそう、このコンパイルされたバージョンは、もう少し普遍的に読み取り可能である考え出し。
私はカスタムの約束が必要だろうと思いますか?
また、私の最終目標は、回帰テストスイートでこの呼び出しを行い、同じキーと重みの呼び出しパラメータで構成可能な時間を実行し、私の中の各コールバックから結果の配列を得ることです最終的なコールバック。
このような何か:
var runTimes = 5;
var runKey = ‘akey’;
var runWeight = 2;
var keyMap = Array(5).fill(runKey);
Promise.all(Promise.map(keyMap, (k, w) => pPromisifiedIncr(k, w))
.then((values) => {
console.log(values);
}));
I)は、(配列の組み合わせを試した(記入)マップやPromises.mapが、かなり起因する初期Promisify自体の問題におそらくそれを取得することができませんでした。 。ありがとう!
約束は一つの引数を必要とするので、私は、あなたが希望通りのようにそれを行うことができますかわかりません。 .. – dandavis
あなたの 'incr'は' keys'と 'weight'パラメータを必要とし、' RateLi私はあなたが 'pPromisifiedIncr(k)'に何をすると思いますか? – Bergi
あなたは 'incr'ではなく' exec'を約束し、 'incr'を約束のスタイルで書くべきです。 – Bergi