21

次のようなコードがあります。

var bar = foo().then(function success(value) {
  // compute something from a value...
}, function failure(reason) {
  // handle an error...
});

failureのコンテキストで関数をthisオブジェクトにバインドするにはどうすればよいですかbar。使用する必要があることはわかっていますmyFunc.bind(this)が、代わりに何を代用しmyFuncますか?

4

4 に答える 4

6

現在、失敗コールバック用の匿名の(ラベルが付いていますが)関数があります。

function failure(reason) {
   // handle an error...
}

robertklep が言うよう.bindに、その無名関数をすぐに呼び出すことができます。.then()ただし、代わりに名前付き関数を使用して、変数として渡す方が読みやすい場合があります。

function success(value) {
    // compute something from a value...
}
function failure(reason) {
    // handle an error...
}
var bar = foo().then(success, failure.bind(this));
于 2013-05-08T08:26:58.450 に答える
4

囲んでいるスコープのオブジェクトのみに関心があり、thisECMA6 以降を使用している場合は、アロー関数を使用できます。次のようになります。

var that = this;
var bar = foo().then(value => {
  // compute something from a value...
  console.log(this === that); // true
  this.propA = value.propA
});

MSD Using promisesでさらに例を見つけることができます

于 2019-04-23T14:26:53.570 に答える