亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

等待 Ajax 請求繪制圖表

等待 Ajax 請求繪制圖表

蠱毒傳說 2023-06-09 17:47:16
我遇到了 javascript 代碼的問題。我正在嘗試動態圖表,它將在使用 plotly.reshape 函數更改選擇字段時更新。我在 chart() 函數中調用基于 Ajax 請求的函數,我希望它等待變量分配,然后繪制圖表。我想我在錯誤的地方使用了 async/await。你們能幫幫我嗎?這是我的第一個 js 腳本,但我在項目中需要它。function chart(){  var x = Chart();  var X =x[0];  var Close=x[1];  var High=x[2];  var Low=x[3];  var Open=x[4];  console.log(X);  var trace1 = {    x: X,     close: Close,     decreasing: {line: {color: '#7F7F7F'}},     high: High,    increasing: {line: {color: '#17BECF'}},     line: {color: 'rgba(31,119,180,1)'},     low:  Low,     open: Open,     type: 'ohlc',     xaxis: 'x',     yaxis: 'y'  };  var data = [trace1];  var layout = {    ...  };    Plotly.newPlot('chart', data, layout);  } function Chart(){  var data, date = [], price = [], open=[], Timestamp=[], High=[], Low = [];  let selectedItem = document.getElementById('currency-selector').value;  var url = `http://127.0.0.1:8000/${selectedItem}/`;   var x = new Array()  var requestURL = url; //URL of the JSON data  var request = new XMLHttpRequest({mozSystem: true}); // create http request    request.onreadystatechange = async function() {   if(request.readyState == 4 && request.status == 200) {            data = JSON.parse(request.responseText);            for (var i=0; i<data.length;i++) {          date.push(data[i].date)          price.push(data[i].close);          High.push(data[i].high);          open.push(data[i].Open);          Low.push(data[i].low);                }            //chart(date,price,High,Low,open);       }    await request.open('GET', requestURL, true);  request.send(); // send the request  }  return [date,price,High,Low,open];  }
查看完整描述

1 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

由于設置的原因,我無法對此進行測試,但這應該可以工作……并按照您期望的順序返回東西。


這是使用 fetch api,它通常比 xmlhttp 請求 api 干凈得多。


但是你知道,async 是包含 await 的函數的標簽。.then() 是如何在這樣的回調中排序的……等待的值將在返回等待的值之前首先執行。


 async function Chart(){


  let date = [], price = [], open=[], Timestamp=[], High=[], Low = [];

  let selectedItem = document.getElementById('currency-selector').value;

  let url = `http://127.0.0.1:8000/${selectedItem}/`; 

  let requestURL = url; //URL of the JSON data

    return await fetch(requestURL)

    .then(res=>res.json())

    .then(data=>{

       data.forEach(x=>{

         date.push(x.date)

         price.push(x.close);

         High.push(x.high);

         open.push(x.Open);

         Low.push(x.low);

      })

   })

   .then(()=>{

      return [date,price,High,Low,open];

    })

 }


查看完整回答
反對 回復 2023-06-09
  • 1 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號