変数「vSave」にデータをロードするにはどうすればよいですか。これはJavascriptが私を混乱させるところです。それは返されるとき、私はこのvSaveを書いた方法は未定義ですが、私はresponse.on( 'end')が動いていて、私が探しているデータがあることを知っています。私はちょうどそれが私のクライアント側でそれを使用することができるように私のルータに戻って取得する方法を知りません。JavaScriptの値は未定義で、値が割り当てられた後に関数が実行されます
var express = require('express');
var router = express.Router();
var parseString = require('xml2js').parseString;
var config = require('../config_bartapi');
var http = require('http');
var vTemp; // [DEBUG]
var vSave; // [DEBUG]
// Real Time Departure from a given station
router.route('/departTimeStation')
.get(function(req, res) {
var vParsed = '';
vCmd = 'etd';
vOrig = req.query.vOriginStation;
vDir = 'n'; // [NOTE] - 'n' or 's', north or south, OPTIONAL
vPlat = 1; // [NOTE] - 1 to 4, number of platform, OPTIONAL
var xoptions = {
host: 'api.bart.gov',
path: '/api/etd.aspx?cmd=' + vCmd + '&orig=' + vOrig + '&key=' + config.bart.client
};
var xcallback = function(response) {
response.on('data', function(chunk) {
vParsed += chunk;
});
response.on('end', function() {
parseString(vParsed, function(err, result) {
vSave = JSON.stringify(result.root.station);
});
});
};
var vTestHttp = http.request(xoptions, xcallback).end();
return res.send (vSave);
});
// list all BART stations
router.route('/listAllStations')
.get(function(req, res) {
var vParsed = '';
vCmd = 'stns';
var options = {
host: 'api.bart.gov',
path: '/api/stn.aspx?cmd=' + vCmd + '&key=' + config.bart.client
};
var callback = function(response) {
response.on('data', function(chunk) {
vParsed += chunk;
});
response.on('end', function() {
parseString(vParsed, function(err, result) {
vTemp = result.root.stations[0].station;
});
});
};
var vTestHttp2 = http.request(options, callback).end();
return res.send (vTemp)
});
module.exports = router;
ありがとうございました。それは簡単なコンセプトのようですが、私はそれを得ることができません。
私は編集する必要がありました。これは完全なコードです。私はもともと1つのモジュールだけを投稿しました。極端な編集をして申し訳ありません。
コールバックがまだ実行されていないため、その時点でvSaveを返すことはできません。後で非同期に実行されます。 – trincot
どのように応答を待つのだろうか?それは動作していませんが、私は動作する方法でそれを変更する方法がわかりません。 'listAllStations'ルートは毎回動作しますが、 'departTimeStation'は決して動作しません。それは複数のhttp.requestが私を乱しているようです。 – Trewaters