sql >> データベース >  >> RDS >> Mysql

Node.jsは、非同期ステートメントを同期的にループまたは反復します

    再帰を使用すると、コードはかなりクリーンになります。 http応答が返されるのを待ってから、次の試行を開始します。これは、すべてのバージョンのノードで機能します。

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

    promiseを使用したソリューションもうまく機能し、より簡潔になります。たとえば、約束を返すgetのバージョン がある場合 Node v7.6 +では、この例のように、いくつかの新しいJS機能を使用するasync/await関数を作成できます。

    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. SQLServerデータベースのバージョン管理

    2. Spring、Hibernate、Blobの遅延読み込み

    3. クラスタ化インデックスなしで主キーを持つことはできますか?また、複数値のクラスター化されたインデックスを持つことはできますか?

    4. AmazonAuroraサーバーレスによる自動スケーリング