Return 来自 Promise.all(...) 的对象
Return object from Promise.all(...)
我正在使用 API 根据机场代码检索(几个机场的)数据...
async function airpt(codes){
const airportCredential = {
"method": "GET",
"headers": {
"x-rapidapi-host": "airport-info.p.rapidapi.com",
"x-rapidapi-key": "xxxx"
}
}
return Promise.all(
codes
.map(code =>
fetch("https://airport-info.p.rapidapi.com/airport?iata="+code,airportCredential)
.then(r => r.json())
)
);
}
像 airpt(['JFK','LAX']
这样的调用会产生一个数组,结果如下:
Array(2)
0: {id: 3406, iata: 'JFK', icao: 'KJFK', name: 'John F. Kennedy International Airport', location: 'New York City, New York, United States', …}
1: {id: 4044, iata: 'LAX', icao: 'KLAX', name: 'Los Angeles International Airport', location: 'Los Angeles, California, United States', …}
length: 2
一切正常。但是我如何 return 来自此函数的(单个)承诺,并将所有数据打包到一个对象中,该对象使用输入 codes
作为键?
我知道如何将数组转换为对象:
array.reduce((obj, item) => {
return {
...obj,
[item['iata']]: item,
};
}, {});
我知道怎么做,在 Promise.all()
解决后使用 .then(...)
。但是,我想将重新打包到一个对象中作为异步函数的一部分。
您似乎已经拥有所需的部分,所以希望您只需要将它们放在一起即可。下面是在 promise.all 和 return 一个基于数组的对象之后执行一些额外代码的样子:
async function airpt(codes){
const airportCredential = {
"method": "GET",
"headers": {
"x-rapidapi-host": "airport-info.p.rapidapi.com",
"x-rapidapi-key": "xxxx"
}
}
const array = await Promise.all(
codes
.map(code =>
fetch("https://airport-info.p.rapidapi.com/airport?iata="+code,airportCredential)
.then(r => r.json())
)
);
return array.reduce((obj, item) => {
return {
...obj,
[item['iata']]: item,
};
}, {});
}
我正在使用 API 根据机场代码检索(几个机场的)数据...
async function airpt(codes){
const airportCredential = {
"method": "GET",
"headers": {
"x-rapidapi-host": "airport-info.p.rapidapi.com",
"x-rapidapi-key": "xxxx"
}
}
return Promise.all(
codes
.map(code =>
fetch("https://airport-info.p.rapidapi.com/airport?iata="+code,airportCredential)
.then(r => r.json())
)
);
}
像 airpt(['JFK','LAX']
这样的调用会产生一个数组,结果如下:
Array(2)
0: {id: 3406, iata: 'JFK', icao: 'KJFK', name: 'John F. Kennedy International Airport', location: 'New York City, New York, United States', …}
1: {id: 4044, iata: 'LAX', icao: 'KLAX', name: 'Los Angeles International Airport', location: 'Los Angeles, California, United States', …}
length: 2
一切正常。但是我如何 return 来自此函数的(单个)承诺,并将所有数据打包到一个对象中,该对象使用输入 codes
作为键?
我知道如何将数组转换为对象:
array.reduce((obj, item) => {
return {
...obj,
[item['iata']]: item,
};
}, {});
我知道怎么做,在 Promise.all()
解决后使用 .then(...)
。但是,我想将重新打包到一个对象中作为异步函数的一部分。
您似乎已经拥有所需的部分,所以希望您只需要将它们放在一起即可。下面是在 promise.all 和 return 一个基于数组的对象之后执行一些额外代码的样子:
async function airpt(codes){
const airportCredential = {
"method": "GET",
"headers": {
"x-rapidapi-host": "airport-info.p.rapidapi.com",
"x-rapidapi-key": "xxxx"
}
}
const array = await Promise.all(
codes
.map(code =>
fetch("https://airport-info.p.rapidapi.com/airport?iata="+code,airportCredential)
.then(r => r.json())
)
);
return array.reduce((obj, item) => {
return {
...obj,
[item['iata']]: item,
};
}, {});
}