Javascript 将异步函数生成的对象馈送到函数中(例如,对于D3)

Javascript 将异步函数生成的对象馈送到函数中(例如,对于D3),javascript,asynchronous,d3.js,Javascript,Asynchronous,D3.js,我有一段异步代码返回一个对象。在本例中,createprimatives回调 var url = "http://example.com/example.ttl"; createprimatives(url, function(dummy) { console.log(dummy); }); 我想将该对象提供给另一个函数 我尝试在以下方面实施最高建议: 通过调用另一个回调重写代码: var url = "http://example.com/example.ttl"; loader(url

我有一段异步代码返回一个对象。在本例中,createprimatives回调

var url = "http://example.com/example.ttl";
createprimatives(url, function(dummy) {
  console.log(dummy);
});
我想将该对象提供给另一个函数

我尝试在以下方面实施最高建议: 通过调用另一个回调重写代码:

var url = "http://example.com/example.ttl";
loader(url, function(graph) {
  var height = 800;
  var width = 800;
  console.log(graph);
  draw(width,height,graph);
});

function loader(url, fn) {
  createprimatives(url, function(dummy) {
    console.log(dummy);
    fn(dummy);
  });
};
console.log(dummy)或console.log(graph)将以异步方式返回与第一个代码段中的简单代码相同的对象

但是,draw失败,出现类似于“TypeError:“x”不是函数“[1]”的消息。
draw为力定向D3图形调用代码,因此更像: “类型错误:svgContainer.append(…).attr(…).selectAll(…).data(…).enter不是函数”

i、 e:

输入时由console.log生成的对象

draw(height,width,graph);
如果首先将对象分配给变量图(即,在loader函数中对第一个代码段的结果进行硬编码),则工作正常

但是,如果等待createprimatives中嵌入的XMLHTTPRequest,并且最初没有分配给graph,则会出现TypeError。我想我需要一段代码,等待XMLHTTPRequest并创建primatives,然后在传递createprimatives函数中的代码生成的对象时调用draw

[1]

你可能会让事情变得更复杂
createprimatives
使用某个对象调用回调。将该对象传递给
绘图
<代码>绘制
抱怨对象的形状不正确。那么什么是
graph
,它是怎么错的呢?我们可能需要查看
createprimatives
draw
的源代码来告诉您问题出在哪里,但听起来您自己也有很多问题。是的,Rob,问题出在createprimatives。我的代码给了D3一个字符串,而它应该是一个对象。第62行:已解决。
var graph = pasted console.log(graph) output into code