[英]Wait until all request calls are returned before continuing
我有一個運行的程序:
async function run() {
for (i of object) {
request("https://www." + i + ".mydomain.com")
await wait(250) // synchronous, to prevent API spam
}
// HERE
moveOn()
}
在運行 moveOn() 之前,如何等到我得到所有請求的響應?
使用 http 請求庫,該庫與諸如got()
之類的承諾一起使用:
const got = require('got');
async function run() {
let promises = [];
for (let i of object) {
promises.push(got("https://www." + i + ".mydomain.com"));
await wait(250) // slight delay, to prevent API spam
}
let results = await Promise.all(promises);
// HERE
moveOn()
}
這里還有其他一些相關點。
request()
庫已被棄用,不推薦用於新代碼。got()
,它支持request()
庫所做的大多數選項,但更容易使用基於 Promise 的 API (在我看來)並且很好地支持前進。run()
function 是任何一個請求都有錯誤。 如果你想做一些不同的事情,你需要使用try/catch
從await got()
捕獲錯誤,然后在catch
塊中處理錯誤。您可以使用axios()
或got()
等。請嘗試這樣:
async function run() {
let count = 0;
for (i of object) {
axios("https://www." + i + ".mydomain.com")
.then(res => {
count++;
// Your code
})
.catch(err => {
count++;
});
await wait(250) // synchronous, to prevent API spam
}
// HERE
setInterval(() => {
if (count === object.length) {
count = 0;
moveOn()
}
}, 250);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.