Не пойманный (в обещании) Ошибка типа: Не удается прочитать свойства неопределенного (чтение «тогда»)

#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 функцию с одним аргументом для выполнения при возврате вашего обещания. Если затем в заголовке появится ошибка, я думаю, что в этой части кода что-то происходит, но не здесь.