使用$ http.get()访问会话变量

时间:2017-02-28 18:42:01

标签: c# .net angularjs multithreading asynchronous

我一直在尝试使用angularjs的<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>BAR SINGLE FUNCTION</title> <script src="http://d3js.org/d3.v3.js"></script> <style type="text/css"> #radioDiv { top: 45px; font-family: verdana; font-size: 8px; width: 455px; } #TOPbarChart { position: absolute; top: 50px; left: 30px; width: 750px; height: 195px; } .axis--y path, .axis--x path { display: none; } .axis--x line, .axis--y line { stroke: black; fill: none; stroke-width: 2px } .yAxis text, .xAxis text { font: 7pt Verdana; stroke: none; fill: black; } .title, .titleX { font-family: Verdana; font-size: 10px; } </style> </head> <body> <div id="radioDiv"> <label> <input id="radioFrt" type="radio" name="frt" value="Apple" class="radioB" checked> APPLE </label> <label> <input type="radio" name="frt" value="Pear" class="radioB"> PEAR </label> </div> <div id="TOPbarChart"></div> <script type="text/javascript"> var currentFruit = "Apple"; var currentColr = "#00a5b6"; var barDataCSV_Dly = "BarData.csv"; // // // radio button document.getElementById("radioFrt").checked = true; d3.selectAll('input[name="frt"]').on("change", function change() { currentFruit = this.value; TOPbarChart(currentFruit, currentColr); }); //FORMATS var parseDate = d3.time.format("%m/%d/%Y").parse; // // BASIC SIZING // function barChartBasics() { var margin = { top: 25, right: 35, bottom: 25, left: 70 }, width = 550 - margin.left - margin.right, height = 155 - margin.top - margin.bottom, colorBar = d3.scale.category20(), barPaddingFine = 1, barPaddingThick = 2; return { margin: margin, width: width, height: height, colorBar: colorBar, barPaddingFine: barPaddingFine, barPaddingThick: barPaddingThick }; } // create svg element var basics = barChartBasics(); var svg = d3.select("#TOPbarChart") .append("svg") .attr({ "width": basics.width + basics.margin.left + basics.margin.right, "height": basics.height + basics.margin.top + basics.margin.bottom, id: "svgTOPbarChart" }); // create svg group var plot = svg .append("g") .attr({ "transform": "translate(" + basics.margin.left + "," + basics.margin.top + ")", id: "svgPlotTOPbarChart" }); var axisPadding = 2; var leftAxisGroup = svg .append('g') .attr({ transform: 'translate(' + (basics.margin.left - axisPadding) + ',' + (basics.margin.top) + ')', 'class': "yAxis axis--y", id: "yAxisGTOPbarChart" }); var bottomAxisGroup = svg .append('g') .attr({ 'class': "xAxis axis--x", id: "xAxisGTOPbarChart" }); var titleTxt = svg.append("text") .attr({ x: basics.margin.left + 12, y: 20, 'class': "title", 'text-anchor': "start" }) // create scales with ranges var xScale = d3.time.scale().range([0, basics.width]); var yScale = d3.scale.linear().range([basics.height, 0]); function TOPbarChart( frt, colorChosen) { // get the data d3.csv(barDataCSV_Dly, function(rows) { TOPbarData = rows.map(function(d) { return { "Fruit": d.Fruit, "dt": parseDate(d.dt), "amount": +d.amount }; }).filter(function(row) { if (row['Fruit'] == frt) { return true; } }); // create domains for the scales xScale.domain(d3.extent(TOPbarData, function(d) { return d.dt; })); var amounts = TOPbarData.map(function(d) { return d.amount; }); var yMax = d3.max(amounts); var yMin = d3.min(amounts); var yMinFinal = 0; if (yMin < 0) { yMinFinal = yMin; } yScale.domain([yMinFinal, yMax]); // introduce the bars // var plot = d3.select("#svgPlotTOPbarChart") var sel = plot.selectAll("rect") .data(TOPbarData); sel.enter() .append("rect") .attr({ x: function(d, i) { return xScale(d.dt); }, y: function(d) { return yScale(d.amount); }, width: (basics.width / TOPbarData.length - basics.barPaddingFine), height: function(d) { return basics.height - yScale(d.amount); }, fill: colorChosen, 'class': "bar" }); // this little function will create a small ripple affect during transition var dlyRipple = function(d, i) { return i * 100; }; sel .transition() .duration(dlyRipple) //1000 .attr({ x: function(d, i) { return xScale(d.dt); }, y: function(d) { return yScale(d.amount); }, width: (basics.width / TOPbarData.length - basics.barPaddingFine), height: function(d) { return basics.height - yScale(d.amount); }, fill: colorChosen }); sel.exit().remove(); // add/transition y axis - with ticks and tick markers var axisY = d3.svg.axis() .orient('left') .scale(yScale) .tickFormat(d3.format("s")) // use abbreviations, e.g. 5M for 5 Million .outerTickSize(0); leftAxisGroup.transition().duration(1000).call(axisY); // add/transition x axis - with ticks and tick markers var axisX = d3.svg.axis() .orient('bottom') .scale(xScale); bottomAxisGroup .attr({ transform: 'translate(' + (basics.margin.left + ((basics.width / TOPbarData.length) / 2)) + ',' + (basics.margin.top + basics.height) + ')', }) .transition().duration(1000).call(axisX.ticks(5)); titleTxt.text("Daily: last " + TOPbarData.length + " days"); // console.log(TOPbarData.length) }); } // // // // TOPbarChart(currentFruit, currentColr); // // // // </script> </body> </html> 方法从我的应用的网络层消耗我在.NET MVC中创建的Api。我正在进行大量$http.get()调用来调用API端点。当我尝试访问在我的应用程序的应用层中的第一个$http.get()调用上设置的会话数据时,问题就出现了。当我尝试使用另一个$http.get()访问会话数据时,该会话不可用。

在角度控制器中,我这样做:

$http.get()

在家庭控制器中我正在做:

$http.get(http://localhost:50033/api/HomeController/SetSessionData)
  .then($http.get(http://localhost:50033/api/HomeController/GetSessionData)
  .then(//Do Something with sessiondata))

`

0 个答案:

没有答案