2014-11-06 3 views
0

Я использую d3.js 3.4.13, а документы говорят, что функция обратного вызова для d3.json(data, callback) должна иметь формат callback(error, responseData), однако я обнаружил, что он фактически устанавливает данные в первый параметр, и второй параметр не нужен, поэтому вместо этого я использую callback(responseData). Это работает, но я смущен, почему это не работает так же, как я интерпретировал документы для его описания. Что мне не хватает?Функция обратного вызова d3.json

ответ

1

Беглый взгляд на the source показывает следующую функцию:

function d3_xhr_fixCallback(callback) { 
    return callback.length === 1 
     ? function(error, request) { callback(error == null ? request : null); } 
     : callback; 
} 

D3 явно проверяет количество аргументов в функции обратного вызова через .length и если есть только один, помещает данные в нем.

Таким образом, версия с одним аргументом представляет собой удобную версию, которая по-прежнему работает так, как ожидалось.

+0

быстрое отслеживание ... любая идея о том, почему он установил мои данные в первый аргумент, а не второй, когда я использую две версии аргумента? – frajk

+0

Этого не должно быть. У вас есть конкретный пример? –

Смежные вопросы