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

它们是成功回调函数的参数

当响应成功时,使用适当的变量调用route方法会异步触发回调。作为方法调用的一部分,参数是回调的一部分。

所以你可以继续用你想要的任何变量名替换它们,这将在函数闭包中使用。

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

使用两个参数调用此函数:

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();
}

请注意,在 JavaScript 中,函数与任何其他对象一样是对象,并且可以像变量一样被传递。由于它是作为变量传入ds.route()的,因此函数本身还没有被执行

在内部,ds.route()使用具有值(起点、目的地、旅行模式)的第一个参数来做某事。没关系,只要该功能做什么。

然后,当它完成后,它将执行第二个参数,即函数。当它执行该函数时,它会将两个值作为参数传递给它。这些值最终将成为函数中使用的resultstatus变量。

为了说明,你可以做一些简单的事情:

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");
    }
});

这定义了一个接受两个参数的函数,并期望它们是一个数字和一个函数。如果数字等于 1,则执行该函数。然后使用值 1 和一个函数调用此函数,该函数将作为回调执行。

于 2013-09-11T17:28:11.803 回答
0

ds.route使用路由对象作为唯一参数调用时,它会生成 aresult和 a status。这些作为参数传递给它的回调。

于 2013-09-11T17:24:26.253 回答