Mysql
 sql >> база данни >  >> RDS >> Mysql

Node.js синхронно обикаля или итерира асинхронни изрази

С рекурсия кодът е доста чист. Изчакайте HTTP отговорът да се върне, след което стартирайте следващия опит. Това ще работи във всички версии на node.

var urls = ['http://stackoverflow.com/', 'http://security.stackexchange.com/', 'http://unix.stackexchange.com/'];

var processItems = function(x){
  if( x < urls.length ) {
    http.get(urls[x], function(res) {

      // add some code here to process the response

      processItems(x+1);
    });
  }
};

processItems(0);

Решение, използващо обещания, също би работило добре и е по-кратко. Например, ако имате версия на get, която връща обещание и Node v7.6+, можете да напишете функция async/await като този пример, която използва някои нови функции на JS.

const urls = ['http://stackoverflow.com/', 'http://security.stackexchange.com/', 'http://unix.stackexchange.com/'];

async function processItems(urls){
  for(const url of urls) {
    const response = await promisifiedHttpGet(url);    
    // add some code here to process the response.
  }
};

processItems(urls);

Забележка:и двата примера пропускат обработката на грешки, но вероятно трябва да имате това в производствено приложение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съществува ли драйвер Go Mysql, който поддържа множество изрази в рамките на един низ?

  2. MySQL:Код на грешка:1118 Размерът на ред е твърде голям (> 8126). Промяна на някои колони на TEXT или BLOB

  3. mysqldump Грешка 1045 Достъпът е отказан въпреки правилните пароли и т.н

  4. Странно SQLException:колоната не е намерена

  5. PHP скрипт за импортиране на csv данни в mysql