Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Node.js lặp lại đồng bộ hoặc lặp qua các câu lệnh không đồng bộ

Với đệ quy, mã khá sạch. Chờ phản hồi http quay trở lại rồi thực hiện lần thử tiếp theo. Điều này sẽ hoạt động trong tất cả các phiên bản của nút.

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);

Một giải pháp sử dụng các lời hứa cũng sẽ hoạt động tốt và ngắn gọn hơn. Ví dụ:nếu bạn có phiên bản get trả về một lời hứa và Node v7.6 +, bạn có thể viết một hàm async / await như ví dụ này, sử dụng một số tính năng JS mới.

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);

Lưu ý:cả hai ví dụ này đều bỏ qua việc xử lý lỗi, nhưng bạn có thể phải xử lý lỗi đó trong ứng dụng sản xuất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thay đổi trường hợp của tên cơ sở dữ liệu trong MySQL?

  2. MySQL - InnoDB so với MyISAM

  3. Hàm tổng hợp trong MySQL - danh sách (như LISTAGG trong Oracle)

  4. django.db.utils.OperationalError:(2026, 'Lỗi kết nối SSL:SSL_CTX_set_tmp_dh không thành công')

  5. Xoay tập hợp kết quả mysql và tạo bảng / ma trận html