Javascript 如何等待数组被另一个承诺填充
d3正在加载一个全局数组。我想在另一个函数中调用该数据 我不太理解承诺,也无法解读文件 调用的第一个函数执行以下操作: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.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);}代码>制动顺序关闭“然后调用一个函数”-该函数在哪里调用?您应该在中执行此操作,然后在回调中执行此操作。