Исправьте это без привязки - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу преобразовать exec функцию в execAsync

https://github.com/couchbase/couchnode/blob/master/lib/bucket.js#L3257

Я делаю это

couchbase.BucketImpl.LookupInBuilder.prototype.executeAsync = function() {
  return new Promise((resolve, reject) => {
    this.execute((error, result) => {
      if (error instanceof Error) {
        reject(error);
      } else {
        resolve(result);
      }
    });
  });
};

Иногда я теряю this, и я не хочу, чтобы bind каждый раз выдавал MutateInBuilder Это способ, который автоматически помогает мне? Я хочу всегда this.execute это couchbase.BucketImpl.LookupInBuilder.prototype.execute

1 Ответ

0 голосов
/ 11 ноября 2018

Кажется странным, что вы перезаписываете прототип couchbase ... но, как подсказывает @trincot, используйте функцию жирной стрелки:

couchbase.BucketImpl.LookupInBuilder.prototype.executeAsync = () => {
  return new Promise((resolve, reject) => {
    this.execute((error, result) => {
      if (error instanceof Error) {
        reject(error);
      } else {
        resolve(result);
      }
    });
  });
};
...