我運行此代碼我想立即發送請求,但在執行所有 for 回圈之后。我想在回圈中做其他事情而不是等待答案。只要他們來,我就會對答案做出反應
var fetchUrl = require("fetch").fetchUrl;
for (var i = 0; i < 10; i ) {
console.log(i);
checkbalance(i);
}
function checkbalance(req) {
var urlCheckBalance =
"https://api.etherscan.io/api?module=account&action=balancemulti&address="
req
"&tag=latest&apikey=<api key>";
// source file is iso-8859-15 but it is converted to utf-8 automatically
fetchUrl(urlCheckBalance, function (error, meta, body) {
console.log(body.toString());
});
}
回應在這里:所有序列號生成。之后運行獲取。
0
1
2
3
4
5
6
7
8
9
{"status":"0","message":"NOTOK","result":"Error! Invalid address format"}
{"status":"0","message":"NOTOK","result":"Error! Invalid address format"}
{"status":"0","message":"NOTOK","result":"Error! Invalid address format"}
{"status":"0","message":"NOTOK","result":"Max rate limit reached"}
{"status":"0","message":"NOTOK","result":"Max rate limit reached"}
我想要這個結果,例如:
0
1
{"status":"0","message":"NOTOK","result":"Error! Invalid address format"}
2
3
4
5
6
7
{"status":"0","message":"NOTOK","result":"Error! Invalid address format"}
8
9
{"status":"0","message":"NOTOK","result":"Error! Invalid address format"}
{"status":"0","message":"NOTOK","result":"Max rate limit reached"}
{"status":"0","message":"NOTOK","result":"Max rate limit reached"}
uj5u.com熱心網友回復:
我剛剛創建了一個小示例片段。您基本上需要做的是“等待”每個呼叫都完成,然后再進行下一個呼叫。
請注意,多次呼叫外部 API 可能會獲得更好的性能,因此您無需等待每個請求相繼完成。
async function checkbalance(i){
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('resolved', i)
resolve();
}, 100);
})
}
(async() => {
for (let i = 0; i < 10; i ) {
console.log(i);
await checkbalance(i);
}
})()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/367422.html
上一篇:Axios回傳未定義
