Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么我的第一个API调用运行良好,而第二个API调用无限期挂起?_Node.js_Express_Response_Bloomberg - Fatal编程技术网

Node.js 为什么我的第一个API调用运行良好,而第二个API调用无限期挂起?

Node.js 为什么我的第一个API调用运行良好,而第二个API调用无限期挂起?,node.js,express,response,bloomberg,Node.js,Express,Response,Bloomberg,我正试图用彭博公共API打开一个会话,将来自我自己服务的API的调用转发给它以获取数据。我现在正在本地运行Node.JS/Express服务器。我有一个API路由,第一次就可以正常工作:我发送GET,然后快速返回响应。如果我再发送另一个GET到同一条路径,我可以在我的服务器控制台中看到彭博API返回的数据,但是服务器似乎被res.send卡住了。。。我不知道为什么。我尝试过很多方法,比如移动代码块和强制销毁变量,但都没有用。你们有没有看到任何明显有效的方法 'use strict'; var

我正试图用彭博公共API打开一个会话,将来自我自己服务的API的调用转发给它以获取数据。我现在正在本地运行Node.JS/Express服务器。我有一个API路由,第一次就可以正常工作:我发送GET,然后快速返回响应。如果我再发送另一个GET到同一条路径,我可以在我的服务器控制台中看到彭博API返回的数据,但是服务器似乎被res.send卡住了。。。我不知道为什么。我尝试过很多方法,比如移动代码块和强制销毁变量,但都没有用。你们有没有看到任何明显有效的方法

'use strict';

var _ = require('lodash');
var Blpapi = require('./blpapi.model');
var count = 0;

var blpapi = require('blpapi');

// Add 'authenticationOptions' key to session options if necessary.
var session = new blpapi.Session({ serverHost: '10.8.8.1', serverPort: 8194 });
var service_refdata = 1; // Unique identifier for refdata service

session.start();
session.on('SessionStarted', function(m) {
    console.log(m);
    session.openService('//blp/refdata', service_refdata);
});
session.on('ServiceOpened', function(m) {
    console.log(m);
});
session.on('SessionStartupFailure', function(m) {
    console.log('SessionStartupFailure', util.inspect(m));
    session.stop();
    session.destroy();
});
session.on('SessionTerminated', function(m) {
    console.log('Session Terminated');
    session.stop();
    session.destroy();
});

exports.getStock = function (req, res) {
    var stock = req.url.substring(8, req.url.length);
    stock = stock.replace(/_/g, ' ');

    session.on('HistoricalDataResponse', function(m) {
        console.log(m);
        if(m.eventType === 'RESPONSE' && m.correlations[0].value === 101) {
            console.log('send');
            res.send(m.data.securityData);
        }
        else {
            res.send(500);
        }
    });

    newRequest(stock);
};

function newRequest(sec) {
    if(typeof sec !== 'string') return;
    session.request('//blp/refdata', 'HistoricalDataRequest',
        { securities: [sec],
            fields: ['PX_LAST', 'OPEN'],
            startDate: "20140101",
            endDate: "20140301",
            periodicitySelection: "DAILY" }, 101);
}

function handleError(res, err) {
    return res.send(500, err);
}

Edit1:如果我更改res.sendm.data.securityData;第201号决议;,请求很好地返回,因此我认为这与该对象有关

我明白了。这是因为我在声明会话。关于“HistoricalDataResponse”。。。。我的路线控制器中的语句。将其移出并在其周围添加一点逻辑解决了问题