0

I am trying to use Node.js's async.

This is my full code.

const fs = require('fs');
const request = require('request');
var schedule = require('node-schedule');

var getBTCData = function(callback){
    request({
        url: "https://api.gopax.co.kr/trading-pairs/BTC-KRW/book?level=1",
        method: 'GET',
        json :true
    }, (error, response, body) => {
        let date = new Date().toLocaleString();
        let today = date.substring(0,4) + "0" + date.substring(5,6) + 
date.substring(7,9); 
        let time = new Date().toLocaleString().substring(10,19);
        let bid = body.bid[0][1];
        let bidVolume = body.bid[0][2];
        let ask = body.ask[0][1];
        let askVolume = body.ask[0][2];
        let data = `${time},BTC,${bid},${bidVolume},${ask},${askVolume}\n`;
        callback(data, today);
    });

} 
setInterval(function(){getBTCData((data, today)=> 
{fs.appendFileSync(`./gopax_BTC_${today}.csv`,data);})}, 1000);

And this is my result.

19:02:32,BTC,7392000,0.70893442,7408000,0.69
19:02:32,BTC,7392000,0.70893442,7408000,0.69
19:02:33,BTC,7392000,0.70893442,7408000,0.69
19:02:35,BTC,7392000,0.70893442,7408000,0.69
19:02:35,BTC,7392000,0.70893442,7408000,0.69

I want to get data every one second like this.

19:02:31,BTC,7392000,0.70893442,7408000,0.69
19:02:32,BTC,7392000,0.70893442,7408000,0.69
19:02:33,BTC,7392000,0.70893442,7408000,0.69
19:02:34,BTC,7392000,0.70893442,7408000,0.69
19:02:35,BTC,7392000,0.70893442,7408000,0.69

How can I get and save data in every one second?

halfer
  • 19,824
  • 17
  • 99
  • 186
  • Possible duplicate of [problem reading a csv file in python](https://stackoverflow.com/questions/3057373/problem-reading-a-csv-file-in-python) – Code_Ninja Aug 20 '18 at 10:38
  • Possible duplicate of [Processing large CSV uploads in Node.js](https://stackoverflow.com/questions/47999919/processing-large-csv-uploads-in-node-js) – er.irfankhan11 Aug 20 '18 at 10:40

1 Answers1

0

As per my understanding you can do like this.

const fs = require('fs');
const request = require('request');
var schedule = require('node-schedule');

var getBTCData = function(callback){
    request({
        url: "https://api.gopax.co.kr/trading-pairs/BTC-KRW/book?level=1",
        method: 'GET',
        json :true
    }, (error, response, body) => {
        let date = new Date().toLocaleString();
        let today = date.substring(0,4) + "0" + date.substring(5,6) + 
date.substring(7,9); 
        let time = new Date().toLocaleString().substring(10,19);
        let bid = body.bid[0][1];
        let bidVolume = body.bid[0][2];
        let ask = body.ask[0][1];
        let askVolume = body.ask[0][2];
        let data = `${time},BTC,${bid},${bidVolume},${ask},${askVolume}\n`;
        callback(data, today);
    });

} 
setInterval(function(){getBTCData((data, today)=> 
{
    data.forEach(function(result) {
     setTimeOut(function() {
      fs.appendFileSync(`./gopax_BTC_${today}.csv`,result)
    }, 1000)
}); 
;})}, 1000);
narayansharma91
  • 2,273
  • 1
  • 12
  • 20
  • This code does not work. T^T. I mean data should be stored every second. not 19:02:32 19:02:32 19:02:33 19:02:35 19:02:35 but 19:02:31 19:02:32 19:02:33 19:02:34 19:02:35 – Tae-Sun Yoo Aug 20 '18 at 12:19