【发布时间】:2022-01-20 02:21:36
【问题描述】:
- 从给定的名称列表中获取最早的名称。 例子: list = ["Tom","Jim","Kerry","John"]
- 给出下面的 API 来获取一个名字的年龄: 获取https://api.agify.io/?name={name}
- 响应格式:{"name":"dawei","age":54,"count":143}
任务是在 node.js 中编写一个函数来获取名称列表并返回最旧的名称
我已经写了下面的代码-
function getOldest(list){
let oldest;
let listOfPromises = list.map((name) => {
callAPI(name);
});
let resp = [];
Promise.all([listOfPromises]).then(function (resArr) {
resp = resArr;
}, function (err) {
throw err;
})
resp.sort((a, b) => {
a.age > b.age;
})
oldest = resp[0].name;
return oldest
}
function callAPI(name) {
let url = `https://api.agify.io/?name=${name}`;
return new Promise((resolve, reject) => {
request.get(url, (err, res, body) => {
if (err) {
return reject(err);
} else {
resolve(body.data);
}
})
})
}
let list = ["Tom", "Jim", "Kerry", "John"];
getOldest(list);
}
有没有更好的方法来做同样的事情?
【问题讨论】:
-
欢迎来到 Stack Overflow!这不是一个人们为您编写代码以便您不必编写代码的网站。如果您需要帮助调试您编写的代码,您必须发布Minimal, Complete, and Verifiable example 并说明您的代码的具体问题。
-
请阅读Open letter to students with homework problems 和How do I ask and answer homework questions?。只是复制/粘贴你的作业不会为你赢得任何朋友。
-
在第四行,我认为您可能打算在回调函数中为 map 函数
callAPI(name)返回 Promise。否则Promise.all([listOfPromises])将无法正确评估。