Использование Отсрочка после await выдает ошибку, измените это:
d3.queue()
.defer(d3.json, 'path\to\country\data')
.await(doFirstChart)
.defer(d3.json, 'path\to\sales\data')
.await(doSecondChart)
На это:
d3.queue()
.defer(d3.json, 'path\to\country\data')
.defer(d3.json, 'path\to\sales\data')
.await(splitCharts)
Гдефункция splitCharts(err, ...args)
имеет вид:
function splitCharts(err, ...charts){
doFirstChart(charts[0]);
doSecondChart(charts[1]);
}
Проблема, с которой вы столкнулись, заключалась в использовании defer after и await, и, возможно, ваших параметров функции, когда вы не ожидали (err, ... args) в качестве параметров.
В этом примере будет console.log
процесс очереди, поэтому вы можете продолжить свой путь оттуда:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script src="https://d3js.org/d3-queue.v3.min.js"></script>
</head>
<body>
<script>
function doFirstChart(err, ...args) {
console.log('[FUNC]: ', args);
}
d3.queue()
.defer(d3.json, 'https://gist.githubusercontent.com/GbalsaC/db387adae4e84e999960ef79267ceada/raw/0cf2b08280452c7dbb04f81fafcb304bb841bc36/test1.json')
.defer(d3.json, 'https://gist.githubusercontent.com/GbalsaC/db387adae4e84e999960ef79267ceada/raw/0cf2b08280452c7dbb04f81fafcb304bb841bc36/test1.json')
.await(doFirstChart)
</script>
</body>
</html>
Примечание: Если вы хотите передать пользовательскийДля параметра обратного вызова .await()
необходимо определить функцию doFirstChart
следующим образом:
function doFirstChart(myParam){
// Now you'll return an anonymous function as first step
return (err, ...args) => {
// Here you'll do your thing, like rendering the data
console.log('My Param: ', myParam); // Your Custom param
console.log('[FUNC]: ', args); // As before
}
}
Итак, теперь вы можете изменить тег <script></script>
на:
<script>
const paramTest = 'Testa Rossa';
function doFirstChart(myParam) {
return (err, ...args) => {
console.log('My Param: ', myParam);
console.log('[FUNC]: ', args);
}
}
d3.queue()
.defer(d3.json, 'https://gist.githubusercontent.com/GbalsaC/db387adae4e84e999960ef79267ceada/raw/0cf2b08280452c7dbb04f81fafcb304bb841bc36/test1.json')
.defer(d3.json, 'https://gist.githubusercontent.com/GbalsaC/db387adae4e84e999960ef79267ceada/raw/0cf2b08280452c7dbb04f81fafcb304bb841bc36/test1.json')
.await(doFirstChart(paramTest)) // do a first param declaration
</script>