Ok、私は作成しているNodeJSアプリケーションを持っています。 JSONデータを返すAPIにHTTPリクエストを送信します。これはsocket.ioを使用してリアルタイムでクライアントに表示します。 setInterval()を使用して関数を 'x'秒間実行しています。最初に送信されたデータがないSocket.ioオブジェクト[setInterval]
グローバル変数を宣言し、接続が確立されたとき(socket.io)に関数を呼び出し、setInterval()を使用しても機能しない場合があります。
問題: 最初の 'x'秒間に未定義のデータが表示されます。 HERESに私のコード(私は不要な部分を削除しています)
var globalObject = {}
function APICall() {
request.get(APIUrl, function (error, response, body) {
globalObject = JSON.parse(body)
})}
io.on('connection', function (socket) {
APICall()
socket.emit('newdata', globalObject)
}
setInterval(function() {
request.get(bitstampAPI, function (error, response, body) {
bitstamp = JSON.parse(body)
socket.emit('price', bitstamp)
})
}, 10000)
})
P.S:そこにはいくつかの問題がある可能性がありますので、中括弧と括弧のエラーを無視しますが、私は私のアプリから不要なロジックの一部を削除しました。
ボトムライン:最初の10秒間、socket.ioはその後、その中にデータのないオブジェクトを発し、のsetInterval()がで蹴り、私が見たものから、API
'setInterval'は10秒が経過するまで最初のリクエストをしないので、最初にデータを取得するための最初のリクエストを行う必要があります。 –