Apabila ketidakkonsistenan ditemui semasa mengisi tatasusunan dengan data JSON, tatasusunan kosong akan dipaparkan dalam konsol.
P粉438918323
2023-08-03 11:50:47
<p>Saya cuba mendapatkan beberapa data menggunakan API AlphaVantage dan saya mahu menyimpan semua dividen yang dibayar oleh stok tertentu dalam tatasusunan. Saya hanya cuba menyimpan dividen sekarang, tetapi pada masa hadapan saya ingin dapat mengaitkan dividen dengan tarikh tertentu. <br /><br />Fungsi untuk mendapatkan semula data:</p><p><strong></strong></p>
<pre class="brush:php;toolbar:false;">async function fetchTimeSeriesDailyAdjusted (ticker) { //Fungsi Ambil untuk mendapatkan penutup harian dan dividen
const apiTimeSeriesDailyAdjusted = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=${symbol}&apikey=${apiKey}`; //Lik API - kemas kini simbol
cuba {
respons const = tunggu fetch(apiTimeSeriesDailyAdjusted);
data const = menunggu respons.json();
const historicalDiviend = []; //Susunan dividen
for (let date in data['Time Series (Daily)']) { //This for sepatutnya membuat kod itu melalui semua JSON
Dividen sejarah = kemasukan ['7 amaun dividen']; //Ini harus menyimpan dividen semasa gelung untuk "pergi"
}
console.log(historicalDividend); //Log konsol untuk melihat dividen
return historicalDividend; //Nilai yang mesti dikembalikan oleh fungsi
} tangkap (ralat) {
console.error('Ralat mengambil apiTimeSeriesDailyAdjusted'); //Log ralat
}
}</pre>
<p>Ini ialah fungsi yang saya buat, tetapi seperti yang saya lihat, dan mungkin anda juga boleh lihat, ia tidak berfungsi. </p>
Masalahnya ialah anda mengisytiharkan pembolehubah yang dipanggil historicalDividend, memulakannya kepada tatasusunan kosong, dan kemudian menetapkan semula keseluruhan pembolehubah kepada data siri masa pada setiap lelaran, yang bermaksud anda menulis ganti nilai setiap kali. Juga, entri tidak ditentukan, saya fikir anda mungkin mahu menggunakan tarikh.
Untuk menyelesaikan semua masalah ini, anda harus menggunakan kaedah map(), yang menerima tatasusunan, menggelungkannya dan mencipta tatasusunan baharu menggunakan nilai pulangan fungsi panggil balik.
Sebagai petua lain: Anda harus menyemak kod status HTTP respons untuk memastikan anda mendapat respons yang diharapkan.
Berikut ialah versi kod anda yang membetulkan kedua-dua isu:
async function fetchTimeSeriesDailyAdjusted(ticker) { //Fetch function to get the daily close and the dividends const apiTimeSeriesDailyAdjusted = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=${symbol}&apikey=${apiKey}`; //Lik of the API - update the symbol try { const response = await fetch(apiTimeSeriesDailyAdjusted); // Check for HTTP response code if (!response.ok) { throw new Error( $`Fetching daily time series data failed with status code '${response.status}'` ); } const data = await response.json(); const historicalDividend = data["Time Series (Daily)"].map( (entry) => entry["7. dividend amount"] ); console.log(historicalDividend); //Console log to see the dividend return historicalDividend; //Value that the function must return } catch (error) { console.error("Error fetching apiTimeSeriesDailyAdjusted"); //Log of the error } }