6

私はnodeとjsの初心者であり、ページをレンダリングする前に3回のRestAPI呼び出しを行うExpressのWebサイトを作成しようとしています。現時点では、以下があります。これは、オブジェクトのリストに変換するjsonを返します。

これらのプロパティの一部はID値のみを返すため、これらのIDのルックアップを返す3つのAPIリクエストを実行して、このデータを意味のある値としてユーザーに提示できるようにしたいと思います。

現在インデックスページをレンダリングしている次のAPI呼び出しを実行することでこれを同期的に行うことができますが、それは本当に厄介に見えます。私が見たすべての非同期チュートリアルは、私の初心者の考え方から地獄を混乱させます。誰かが以下の構造をいくらか反映する非同期の簡単な例を投稿できますか?

var issues_json = "";
var request = http.request(options, function(response) {
    console.log("statusCode: ", res.statusCode);
    console.log("headers: ", res.headers);

    response.on("data", function(data) {
        issues_json += data;
    });

    response.on("end", function() {
        console.log(issues_json);
        var column_obj = JSON.parse(issues_json);
        res.render('index', {
            title: 'List of Issues',
            response: issues_json,
            objects: column_obj
        });
    });

    response.on("error", function(e) {
        console.log(e.Message);
        res.render('index', {
            title: 'error',
            e: e.Message
        });
    });
});
request.end();
4

2 に答える 2

4

リクエストを使用する必要があります

あなたは次のようなものを持っているでしょう

app.get("/route", function(req, res) {

  var callbackThree = function(error, resp, body) {
    var data = JSON.parse(body);
    res.send({title; "My Title", data: data});
  }

  var callbackTwo = function(error, resp, body) {
    request("api.com/42", callBackThree);
  }

  var callbackOne = function(error, resp, body) {
    request("api.com/things", callBackTwo);
  }

  request("api.com/users", callBackOne);
}
于 2012-08-20T22:09:58.523 に答える
0

これをチェックしてください: https://github.com/JacksonTian/eventproxy。イベントへの非同期呼び出しを行う js lib です。チェックされた回答との唯一の違いは、コードの書き方です。

于 2013-05-24T01:44:58.030 に答える