【发布时间】:2019-11-24 22:30:57
【问题描述】:
我正在尝试编写一些代码来调用 API,然后返回一些 URL,然后我需要从每个 URL 进行新的调用。为了避免在任何地方嵌套大量回调,我尝试使用 async/await,但尽管我尝试了非常简单的设置,但由于某种原因它似乎无法正常工作。
我尝试创建两个异步函数,其中一个调用任何 url 并返回响应,另一个将根据响应多次调用第一个函数(即返回多少个 url )。
const request = require('request');
init();
async function init() {
const username = "x";
const archiveUrl = "https://someurl.com";
const archiveResponse = await apiCall(archiveUrl)
const archives = archiveResponse.archives;
console.log(archives);
}
async function apiCall(url) {
request(url, { json: true }, (err, res, body) => {
if (err) { return console.log(err); }
console.log(body);
return body;
});
}
这实际上是我目前的全部代码,我不确定哪里出了问题。我得到的错误是它无法从 undefined 读取 .archives,然后在该错误消息之后,它会从 apiCall 函数记录正文(让我相当确定该函数没有按预期等待)。
也就是说我看不出我做错了什么。任何关于一般最佳实践的提示都将不胜感激,我以前使用过 async/await,但它一直是 hacky 和自学的,所以我确信有更好的方法来做到这一点。
【问题讨论】:
标签: javascript node.js async-await