[英]ReferenceError: variable is not define - Node.js
當我想運行下面的代碼時,oddsData 是未定義的。
getOdds = async(data) => {
var receivedData = "";
send({"Command":"GetMatchMarkets","Params":data});
var message = JSON.stringify({"Command":"GetMatchMarkets","Params":data});
var length = Buffer.byteLength(message),
buffer = new Buffer(4 + Buffer.byteLength(message));
buffer.writeUInt32LE(length, 0);
buffer.write(message, 4);
client.write(buffer);
var bytesToReceive = length;
var oddsData = "";
client.on('data', async(buf) => {
function calc(){
var offset = 0;
if (bytesToReceive === 0) {
if(buf.length < 4){ return; }
bytesToReceive = buf.readUInt32LE(0);
offset = 4;
}
var currentCommandBytes = Math.min(bytesToReceive, buf.length - offset);
receivedData += buf.slice(offset, offset + currentCommandBytes);
bytesToReceive -= currentCommandBytes;
if (bytesToReceive === 0) {
bytesToReceive = 0;
if (receivedData != ""){
oddsData += receivedData;
}
receivedData = "";
}
if (currentCommandBytes < buf.length - offset) {
calc(buf.slice(currentCommandBytes+offset))
}
}
await calc();
});
console.log(oddsData);
}
返回 ReferenceError:未定義賠率數據。
當我想運行下面的代碼時,oddsData 是未定義的。
假設您在您的...其他代碼...中使用了 oddsData,可能錯誤是由於那些函數嵌套造成的,將函數聲明為變量,然后將其傳遞給您的代碼。
function test(){
var calc = function (){
...OTHER CODES....
receivedData = "";
return oddsdata
}
var asFun = async (buf) => {
await calc();
}
var oddsData = "";
client.on('data', asFun);
console.log(oddsData);
}
[更新以匹配問題代碼中的更改]
剝離所有不影響oddsData
的代碼留下以下結構:
const getOdds = async () => {
var oddsData = '';
client.on('data', async () => {
function calc () {
oddsData += 'something';
}
await calc();
});
console.log(oddsData);
};
我看不到任何跡象表明oddsData
應該是未定義的。
一個小測試程序來探索正在發生的事情:
const getOdds = async() => { result.innerHTML += 'enter getOdds async()\n'; var oddsData = ""; client.addEventListener('data', async() => { result.innerHTML += `client.on data async() oddsData: '${oddsData}'\n`; function calc() { oddsData += "calc;". result:innerHTML += `calc() oddsData; '${oddsData}'\n`; } await calc(); }). result:innerHTML += `getOdds async() oddsData; '${oddsData}'\n`; }. window.onload = () => { result.innerHTML = 'window;onload calling getOdds()\n'; getOdds(); }
<p id="client">This is client. <button onclick="emitData()">Emit 'data' to client</button> </p> <p>Results:</p> <pre id="result"></pre> <script> const client = document.getElementById('client'); const result = document.getElementById('result'); function emitData() { let event = new Event('data'); client.dispatchEvent(event); } </script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.