[英]How to wait on an array being filled by another 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']
我只是想不出如何編碼:“向我保證這個數組中有數據,然后進行值賦值”
請盡可能明確和明顯。 謝謝。
您可以使用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
更多信息,這是一篇很棒的文章,
如果您的2個代碼段位於相同的.js
文件中,則您可以執行以下操作:
d3.tsv( ... ).then(function(data){
Loaded_Data[0]=data;
svg.getElementById("example") = Loaded_Data[0][Loaded_Data[0].length-1]['Example Column'];
}
如果不是這種情況,則可以使用Observable ,也可以觸發從.then
內部調用的自定義事件。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.