#javascript #d3.js
#язык JavaScript #d3.js
Вопрос:
Я использую объектно-ориентированную диаграмму и устанавливаю данные в соответствии с положением прокрутки. Я использую d3.csv() для загрузки данных с помощью then(), вот так:
const chart = new Chart(instatiatechartfunctions); let dataObj1 = d3.csv('datapath', dataparsefunction); let dataObj2 = d3.csv('datapath2', dataparsefunction); let dataArr = [dataObj1,dataObj2]; function init(data){ chart.setData(data); } let g3 = scrollerfunction().settings() .on('active', function(i){ dataArr[i].then(init); //error here });
Мне довольно сложно включить библиотеку скроллера вместе со всем кодом для диаграммы, поэтому я надеюсь, что вышесказанное достаточно ясно. Моя главная проблема заключается в том, что вызов init
then()
без () показывает график, но возвращает ошибку в заголовке. когда я использую круглые скобки ( then(init())
) Я получаю следующую ошибку:
Uncaught TypeError: Cannot read properties of undefined (reading '0')
Я использую d3.v6 Кто-нибудь может помочь?
Комментарии:
1.
.on('active', function(i){console.log(i, dataArr.length, dataArr[i]); ....
Так что отладьте и выясните, что происходит.
Ответ №1:
Ставить .then(init)
без скобок равносильно высказыванию .then((array) =gt; init(array))
, так как в обоих случаях вы предоставляете .then
функцию с одним аргументом для выполнения при возврате вашего обещания. Если затем в заголовке появится ошибка, я думаю, что в этой части кода что-то происходит, но не здесь.