принесите для nodejs

#node.js #http #request #fetch

Вопрос:

Я запускаю этот код, я хочу немедленно отправить запрос, но после того, как будет выполнен цикл for. Я хочу заниматься другими делами в цикле и не ждать ответов. Я буду реагировать на ответы, когда бы они ни пришли

 var fetchUrl = require("fetch").fetchUrl; for (var i = 0; i lt; 10; i  ) {  console.log(i);  checkbalance(i); }  function checkbalance(req) {  var urlCheckBalance =  "https://api.etherscan.io/api?module=accountamp;action=balancemultiamp;address="    req    "amp;tag=latestamp;apikey=lt;api keygt;";   // 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"}  

Комментарии:

1. Поддерживает ли ваша среда ES6?

2. Если я им воспользуюсь, будет ли это работать? и как?

Ответ №1:

Я только что создал небольшой пример фрагмента. Что вам в основном нужно сделать, так это «дождаться» выполнения каждого вызова, прежде чем переходить к следующему вызову.

Имейте в виду, что вы можете повысить производительность при многократном вызове внешнего API, поэтому вам не нужно ждать, пока каждый запрос будет выполнен один за другим.

 async function checkbalance(i){  return new Promise((resolve, reject) =gt; {  setTimeout(() =gt; {  console.log('resolved', i)  resolve();  }, 100);  }) }  (async() =gt; {  for (let i = 0; i lt; 10; i  ) {  console.log(i);  await checkbalance(i);  } })()