API(Application Programming Interface) 是一组定义和协议,用于构建和集成应用程序软件。API允许不同的软件组件相互通信,通过定义它们可以调用的方法、数据格式和参数。
假设我们有两个API:
GET /api/list
返回一个键值对的列表。GET /api/value/{key}
根据键获取对应的值。async function fetchList() {
const response = await fetch('/api/list');
const data = await response.json();
return data;
}
async function fetchValue(key) {
const response = await fetch(`/api/value/${key}`);
const data = await response.json();
return data;
}
async function processValues() {
const list = await fetchList();
for (const item of list) {
const value = await fetchValue(item.key);
console.log(`Key: ${item.key}, Value: ${value}`);
}
}
processValues();
const express = require('express');
const app = express();
const list = [
{ key: 'a', value: 1 },
{ key: 'b', value: 2 },
{ key: 'c', value: 3 }
];
app.get('/api/list', (req, res) => {
res.json(list);
});
app.get('/api/value/:key', (req, res) => {
const key = req.params.key;
const item = list.find(i => i.key === key);
if (item) {
res.json(item.value);
} else {
res.status(404).json({ message: 'Key not found' });
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
问题:在循环调用第二个API时,可能会遇到性能问题或超时。
原因:
解决方法:
Promise.all
来并行处理多个API请求。async function processValuesParallel() {
const list = await fetchList();
const promises = list.map(item => fetchValue(item.key));
const results = await Promise.all(promises);
results.forEach((value, index) => {
console.log(`Key: ${list[index].key}, Value: ${value}`);
});
}
processValuesParallel();
通过这种方式,可以显著提高处理效率,减少等待时间。
领取专属 10元无门槛券
手把手带您无忧上云