1

この変数の結果ステータスは何を参照していますか? 彼らはどこから来たのか?出発地、目的地、旅行モードはどのように関数に渡されますか? 関数の結果はどこに行きますか?

$('#directions-form').submit(function(e) {
  $('#error').hide();
  ds.route({
    origin: $('#from').val(),
    destination: $('#to').val(),
    travelMode: $('#mode').val()
  }, function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      fitBounds = true;
      dr.setDirections(result);
    }
    else {
      $('#error').text(status).show();
    }
    recalcHeight();
  });
  e.preventDefault();
  return false;
});
4

3 に答える 3

2

それらは、成功のコールバック関数のパラメーターです。

適切な変数で呼び出されたルートメソッドは、応答が成功したときにコールバックを非同期的に起動します。パラメータは、メソッド呼び出しの一部としてコールバックの一部です。

したがって、先に進んで、関数クロージャー内で使用できる任意の変数名に置き換えることができます。

 }, function(a, b) {  // Will work to 
于 2013-09-11T17:21:26.090 に答える
1

この関数は、次の 2 つのパラメーターで呼び出されています。

ds.route()

最初のパラメーターは、いくつかの値を持つオブジェクトです。

{
    origin: $('#from').val(),
    destination: $('#to').val(),
    travelMode: $('#mode').val()
}

2 番目のパラメーターは関数です。

function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        fitBounds = true;
        dr.setDirections(result);
    }
    else {
        $('#error').text(status).show();
    }
    recalcHeight();
}

JavaScript では、関数は他のオブジェクトと同様にオブジェクトであり、変数のように渡すことができることに注意してください。変数として渡されds.route()ているため、関数自体はまだ実行されていません。

内部的にds.route()は、値 (origin、destination、travelMode) を持つ最初のパラメーターを使用して、何かを行います。それは問題ではなく、その機能が何をするかだけです。

それが完了すると、関数である 2 番目のパラメーターが実行されます。その関数を実行すると、2 つの値がパラメーターとして渡されます。これらの値は、関数内で使用されるresultおよびstatus変数になります。

説明のために、次のような簡単なことを行うことができます。

function doSomething(value, callback) {
    if (value == 1) {
        alert("The value is 1");
        callback(2)
    }
}

doSomething(1, function (value) {
    if (value == 2) {
        alert("The value is 2");
    }
});

これは、2 つの引数を取り、それらが数値と関数であることを期待する関数を定義します。数値が 1 の場合、その関数が実行されます。次に、この関数が値 1 と関数で呼び出され、コールバックとして実行されます。

于 2013-09-11T17:28:11.803 に答える
0

ds.routeroute オブジェクトを唯一の引数として を呼び出すと、 と が生成されresultますstatus。これらは引数としてそのコールバックに渡されます。

于 2013-09-11T17:24:26.253 に答える