Javascript 如何等待数组被另一个承诺填充

Javascript 如何等待数组被另一个承诺填充,javascript,promise,Javascript,Promise,d3正在加载一个全局数组。我想在另一个函数中调用该数据 我不太理解承诺,也无法解读文件 调用的第一个函数执行以下操作: d3.tsv( ... ).then(function(data){Loaded_Data[0]=data);} 然后调用一个函数来填充我的svg: svg.getElementById("example") = Loaded_Data[0][Loaded_Data[0].length-1]['Example Column'] 我就是不知道如何编码:“向我保证这个数组中

d3正在加载一个全局数组。我想在另一个函数中调用该数据

我不太理解承诺,也无法解读文件

调用的第一个函数执行以下操作:

d3.tsv( ... ).then(function(data){Loaded_Data[0]=data);}

然后调用一个函数来填充我的svg:

svg.getElementById("example") = Loaded_Data[0][Loaded_Data[0].length-1]['Example Column'] 
我就是不知道如何编码:“向我保证这个数组中有数据,然后进行赋值”


请尽可能明确和明显。谢谢。

您可以使用ES8功能
async/await
, 假设您正在一个名为
foo
的函数中执行逻辑

// If you are using await inside a function it should be declared as async
async function foo(){

// await will make sure to pause the execution till the promise is resolved
Loaded_Data[0]=await d3.tsv( ... );

svg.getElementById("example") = Loaded_Data[0][Loaded_Data[0].length-1]['Example Column'] 

}
有关
async/await
的更多信息,这里有一篇很棒的文章


如果您的两个代码片段位于同一个
.js
文件中,则您可以执行以下操作:

d3.tsv( ... ).then(function(data){
    Loaded_Data[0]=data;
    svg.getElementById("example") = Loaded_Data[0][Loaded_Data[0].length-1]['Example Column'];
}
如果不是这样,则可以使用,或者可以触发从
中调用的自定义事件

d3.tsv( ... ).then(function(data){
     Loaded_Data[0]=data;
     var event = new Event('Loaded_Data_HasData');
     window.dispatchEvent(event);
}
然后在另一个文件/位置中,侦听该事件

elem.addEventListener('Loaded_Data_HasData', function (e) { 
    svg.getElementById("example") = Loaded_Data[0][Loaded_Data[0].length-1]['Example Column']; 
}, false);

这真的没用。我已经加载了d3承诺中填写的_数据。我正在等待两个单独的承诺。一个等待加载SVG,另一个等待加载到d3.tsv。我想将我的两个承诺与加载的_数据数组结合起来。@HAZRD如果要等待两个承诺,可以使用
const results=wait Promise.all([promise2,promise2])
ta);}制动顺序关闭“然后调用一个函数”-该函数在哪里调用?您应该在
中执行此操作,然后在
回调中执行此操作。