gpt4 book ai didi

javascript - 如何使用 Nodejs 进行多个 API 调用以将所有结果保存在一个 json 文件中?

转载 作者:行者123 更新时间:2023-12-01 03:19:30 24 4
gpt4 key购买 nike

我想一次性从 JSON API 获取不同 url(值)的结果并将结果保存在一个 json 文件中。我的方法如下,但我在生成的对象和 json 文件中遇到了待处理的 Promise。有什么方法可以使用 Promise 解决这个问题,还是应该使用回调?任何提示都将不胜感激。我确信可以编码得更好。

const fetch = require('node-fetch');
const util = require('util');

function getIndicator (indicator) {
url = 'http://api.worldbank.org/countries/de/indicators/' + indicator + '/?date=2012:2018&format=json';
let result = fetch(url)
.then(function(res) {
return res.json();
})
.then(function(json) {
return json;
})
return result;
}

function loadIndicators () {
let indicators = ['SP.POP.TOTL','SP.DYN.IMRT.IN','SP.DYN.LE00.IN'];
let german_indicators = {};
indicators.forEach(function (e) {
german_indicators[e] = getIndicator(e);
})
return german_indicators;
}

let result = loadIndicators();
fs.writeFileSync('./data.json', util.inspect(result), 'utf-8');

最佳答案

您的 getIndicatorloadIndicators 函数可能会返回 Promise,因此您可以在 中执行 Promise.all loadIndicators 循环。

const fetch = require('node-fetch');
const util = require('util');
function getIndicator(indicator) {
const url = 'http://api.worldbank.org/countries/de/indicators/' + indicator + '/?date=2012:2018&format=json';
return fetch(url)
.then(function (res) {
return res.json();
});
}
function loadIndicators() {
return new Promise((resolve, reject) => {
const promises = [];
let indicators = [
'SP.POP.TOTL',
'SP.DYN.IMRT.IN',
'SP.DYN.LE00.IN'
];
let german_indicators = {};
indicators.forEach(function (e) {
promises.push(new Promise((resolve, reject) => {
getIndicator(e).then((result) => {
german_indicators[e] = result;
resolve();
}).catch(reject);
}));
});
Promise.all(promises).then(() => {
resolve(german_indicators);
}).catch(reject);
});
}
loadIndicators().then((result) => {
fs.writeFileSync('./data.json', util.inspect(result), 'utf-8');
}).catch(console.error);

关于javascript - 如何使用 Nodejs 进行多个 API 调用以将所有结果保存在一个 json 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45323036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com