在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指定)这个回调函数应该带一个参数,这个参数对应于响应?
答案 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
- 无论何时或将要解决或拒绝承诺,只要结果可用,就会异步调用其中一个成功或错误回调。使用单个参数调用回调:结果或拒绝原因。此外,在解决或拒绝承诺之前,可以将通知回调调用零次或多次以提供进度指示。