0

誰かがこれを説明してくれることを願っています。ajax 呼び出しが埋め込まれた関数への呼び出しがあります。

getstuff(indata, function (out1,out2) {
            aaa= out1;
            bbb=out2;
            })

getstuff の成功関数は次のようになります。

success: cb

完了すると、「aaa」にはデータが入力され、「bbb」には「成功」が表示されます。

success(data, textStatus, jqXHR)

あるべきだと言います。しかし、out1 と out2 が設定されていることをどのように認識しているかはよくわかりません。関数は、out 1 がデータであり、out2 が textStatus であることを、これらが入力パラメーターである場合にどのように認識しますか? 私は良い説明が大いに役立つでしょう。ありがとう

4

1 に答える 1

1

これらの値は内部$.ajaxでコールバックに渡されます。それはまさにあなたがすでに投稿した方法です。内部のどこかで、コールバックは として呼び出されsuccess(data, textStatus, jqXHR)ます。datatextStatusそしてjqXHR単なる変数です。

パラメータには任意の名前を付けることができます。関数は、それが関数に渡された最初の引数であることを認識しているため、名前out1それdataに関連付けます。についても同様です。out1out2

非常に簡単な例を次に示します。

function foo(callback) {
    var someData = 'someValue';
    callback(someData);
}

foo(function(someParameterName) {
    console.log(someParameterName);
});

関数パラメーターの名前は、渡される変数の名前とはまったく関係がなく、コールバックについて魔法のようなものは何もありません。コールバックは単なる関数であり、異なる動作をすることはありません。これを見たら

var a = 1,
    b = 2;

function foo(out1, out2) {
    console.log(out1, out2);
}

foo(a, b);

なぜout1であり1out2であるのだろうか2

于 2012-08-04T15:47:03.193 に答える