Почему функция.await не используется в этом очень маленьком примере?
HTML
<h1>test</h1>
<div id="a"></div>
<div id="b"></div>
JS
d3.queue()
.defer(a,1)
.await(b,2);
function a(x){
d3.select('#a').text("a is executing with x="+x);
}
function b(err,x){
d3.select('#b').text("b is executing with x="+x);
}
Выход
test
a is executing with x=1
@altocumulus избил меня с его проницательным комментарием, но так как пример говорит тысячу слов:
<!DOCTYPE html>
<html>
<head>
<script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<h1>test</h1>
<div id="a"></div>
<div id="b"></div>
<script>
var q = d3.queue()
.defer(a, 1, 2)
.await(b);
function a(x, y, callback) {
d3.select('#a').text("a is executing with x=" + x);
callback(null, y);
}
function b(err, x) {
d3.select('#b').text("b is executing with x=" + x);
}
</script>
</body>
</html>
Это в первых предложениях документов:
вызов должен быть вызван задачей при ее завершении.
Чтобы соответствовать API, вам нужно вызвать обратный вызов, который поставляется в качестве последнего параметра вашей функции a()
:
function a(x, callback) {
d3.select('#a').text("a is executing with x="+x);
callback(null, { /* result */ });
}