0

これは私の最初の投稿です。正しくやっているといいのですが。やりたいプロジェクトのためにnodejsを学んでいて、nodeを使ってWebサービスを書いています。私はチュートリアルに従い、動作するWebサービスにたどり着きましたが、データベースに接続する部分を自分で書かなければなりませんでした. 問題は、データを返しますが、他のすべてをブロックすることです。クエリ 1 に 20 秒かかり、クエリ 2 に 3 秒しかかからず、クエリ 1 を呼び出してからクエリ 2 を呼び出すと、クエリ 2 はクエリ 1 が完了した後にのみ表示され、すべての潜在的なユーザーがブロックされます! これが私のコードの一部です。さらに必要な場合はお問い合わせください

これはリクエスト ハンドラの 1 つです。最後の 2 つのパラメータはテスト用です。

function start(response){
        console.log("Request handler 'insertHood' was called.");
        response.writeHead(200, {"Content-Type": "text/html"});
        var result = db.execute('select x(country_location), y(country_location), country_name, zoom_level from country', response, "Query 1 ", 10);
    }

これは、database.js ファイル内の関数です。

function execute(query, response, msg, sleepz) {
  var result = sequelize.query(query)
  .success(function(rows)
    {
      sleep(sleepz);
      response.write(msg + JSON.stringify(rows));
      console.log(msg + (new Date()));
      response.end();
    }
  ).error(function(e) {
      console.log("An error occured", e);
      response.write("there was an error man, yo yoy oy");
      response.end();
    }
  );
}

.success と .error がコールバック関数であることは理解していますが、それらを非同期にする方法が見つからないようです。非同期ライブラリについて読みましたが、それが必要なことをしているとは思いません。何か間違ったことをしていると確信しています。それは...ですか?

4

1 に答える 1