Ich habe eine rekursive Wiederholungsroutine, so etwas wie dieses:Prevent Bindung eine Funktion mehr als einmal
Foo.prototype.retry = function(data, cb){
cb && (cb = cb.bind(this)); // want to bind the cb fn just once
this.resolutions[x] = (err, val) => {
if(val === 'foobar'){
// in this case, we do a retry
return this.retry(data, cb);
}
}:
}
, wie Sie unter bestimmten Umständen sehen können, ich durch den Aufruf this.run
wieder wiederholen wird. Aber ich möchte vermeiden, cb.bind()
mehr als einmal zu nennen. Gibt es einen guten Weg, das zu tun?
=> Was ich meine, gibt es eine Möglichkeit, irgendwie zu überprüfen, eine Funktion ist an einen bestimmten this
Wert gebunden?
Die einzige gute Lösung, die ich kenne, ist eine Wiederholungsanzahl zu übergeben, etwa so:
Foo.prototype.retry = function(data, cb){
if(cb){
if(!data.__retryCount){
cb = cb.bind(this);
}
}
this.resolutions[x] = (err, val) => {
if(val === 'foobar'){
// we do a retry here
data.__retryCount = data.__retryCount || 0;
data.__retryCount++;
return this.retry(data, cb);
}
}:
}
warum die downvote? Bitte erklären Sie, warum Sie die Frage nicht mögen –
ist 'cb? (cb = cb.bind (this)) 'gültige JS? Ich wusste nicht, dass Sie ein ternäres ohne eine alternative definiert –
ich cb && nicht cb?, Sorry typo –