如何确定回调函数的参数列表

时间:2016-02-05 16:57:57

标签: javascript angularjs d3.js callback

在D3.js中,有时我会将回调函数作为参数传递,例如在延迟()下面:

d3.select('body').selectAll('div')
  .data(distances)
  .enter()
  .append('div')
  .html('.')
  .style('width', '10px')
  .style('opacity', 0)
  .transition()
    .delay(function(d, i) { return i * 1000 })

问题:我们怎么知道回调函数应该有两个参数:d和i。它在什么文件中指明' d'应该对应于数据和' i'对应索引?

我的问题不仅限于D3.js,还包括js惯例。例如。在Angular.js中,我发现了类似的东西。例如在传递给then()的回调函数中:

// Simple GET request example:
$http({
  method: 'GET',
  url: '/someUrl'
}).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
  }, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });

我怎么知道(即哪个Document指定)这个回调函数应该带一个参数,这个参数对应于响应?

1 个答案:

答案 0 :(得分:2)

  

我的问题不仅限于D3.js,还包括js惯例。

必须通过API方法记录您要将回调传递给。没有其他方法可以让你知道回调将被调用的参数 - 或何时将被调用,它将返回什么(如果有的话),等等。

对于您的D3示例,it's defined in the delay documentation

  

否则,如果 delay 是一个函数,则对每个选定元素(按顺序)计算函数,传递当前数据d和当前索引{{1} },i上下文作为当前DOM元素。

对于AngularJS示例,this是Promise函数,documented here

  

Promise API

     

...

     

<强>方法

     
      
  • then - 无论何时或将要解决或拒绝承诺,只要结果可用,就会异步调用其中一个成功或错误回调。使用单个参数调用回调:结果或拒绝原因。此外,在解决或拒绝承诺之前,可以将通知回调调用零次或多次以提供进度指示。
  •