1

タイトルが変で、文章で説明するのに最適な方法がよくわかりません...

現在、3 つの機能を持つオブジェクトがあります。func、funcSuccess、および funcFailure。func には、成功コールバックとして this.funcSuccess 、エラー コールバックとして funcError を持つ jQuery ajax リクエストが含まれています。func には、成功値を戻すためのコールバックが渡されますが、このコールバックは funcSuccess コードで実行する必要があります。

コードは次のとおりです。

var Obj =

  { func: function (callback) {
      $.ajax(
        { type: 'POST'
        , url: '/func'
        , success: this.funcSuccess
        , error: this.funcError
        }
      )
    }

  , funcSuccess: function (res) {
      // THIS IS WHERE CALLBACK IS NEEDED
      callback(res.thing)
    }

  , funcError: function (res) {
      debug(res)
    }

  }

次のようにするよりも、よりきちんとした方法があるかどうか疑問に思っています。

var that = this
$.ajax(
  { type: 'POST'
  , url: '/func'
  , success: function (res) {
      that.funcSuccess(res)
    }
  , error: this.funcError
  }
)

明らかな何かが欠けていることは確かですが、今日は完全ではありません...

4

2 に答える 2

0

callbackをに渡す必要がありfuncSucessます。そうしないと、アクセスできません。ここでクロージャーを使用して:

var Obj = {
    func: function (callback) {
        return $.ajax({
            type: 'POST', 
            url: '/func',
            success: this.makeFuncSuccess(callback),
            error: this.funcError
        });
    }, makeFuncSuccess(callback) {
        return function funcSuccess (res) {
            callback(res.thing);
        };
    },
    funcError: function (res) {
       debug(res)
    }
};
于 2013-01-31T14:54:42.453 に答える