Функция d3.queue.await не вызывается

1

Почему функция.await не используется в этом очень маленьком примере?

http://jsfiddle.net/x2fkvsco/

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
Теги:
d3.js
async-await
deferred

2 ответа

4
Лучший ответ

@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>
  • 0
    Спасибо, теперь я вижу! Я бы принял оба ответа, если бы мог, но я приму этот.
3

Это в первых предложениях документов:

вызов должен быть вызван задачей при ее завершении.

Чтобы соответствовать API, вам нужно вызвать обратный вызов, который поставляется в качестве последнего параметра вашей функции a():

function a(x, callback) {
  d3.select('#a').text("a is executing with x="+x);
  callback(null, { /* result */ });   
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню