2017-09-06 1 views
1

Pour autant que je sache, il s'agit d'un stream, donc il est constamment en streaming des valeurs à la base de données Oracle.fonction de temporisation pour le noeud?

Je me demande si je peux faire une fonction de temporisation pour attendre environ 3 secondes avant d'envoyer à nouveau.

var net = require('net'); 
var fs = require('fs'); 
var oracledb = require('oracledb'); 
var dbConfig = require('./dbconfig.js'); 


var client = new net.Socket(); 

client.connect(8080, "192.168.0.7"); 

console.log("Client most likely connected..."); 


oracledb.getConnection(
    { 
     user   : dbConfig.user, 
     password  : dbConfig.password, 
     connectString : dbConfig.connectString 
    }, 
    function(err, connection) { 
     if (err) { 
     console.error(err.message); 
     return; 
     } 
     client.on('data', function (data) { 
     var weight_data = Number(data); 
     console.log('Data: ' + data); 
     connection.execute("INSERT INTO UNI_SCRAP_SCALE(WEIGHT) VALUES (:weight)", [weight_data], function (err, result) { 
      if (err) throw err; 
      console.log("Rows inserted: " + result.rowsAffected); 
      console.log('Data received from Db:\n'); 
      console.log(result); 
      connection.commit(
      function (err) { 
       console.log('Done') 
      }); 
      }); 
     }); 
     }); 
    }); 



// client.destroy(); 
+0

Je mis setTimeout en 3 endroits différents. Si connection.execute se trouvait à l'intérieur du bloc setTimeout, il aurait tort de dire qu'il avait besoin d'un rappel. J'ai donc essayé de le mettre ci-dessous pour les 3 console.logs et il a attendu 3 secondes sur ce code, puis a commencé à s'exécuter comme si setTimeout n'était plus là (je suppose que setTimeout est seulement une chose unique). De toute évidence, Node était un mauvais choix. Peut-être que l'utilisation de prises était un mauvais choix aussi. –

Répondre

0

JavaScript:

setTimeout(function() { 
    // code you want to wait for here 
}, 3000); 
1

Il y a une fonction pour définir le délai en JavaScript, setTimeout(), voici un exemple:

setTimeout(function { 
    // place your code here 
}, 3000); //number of millisecond before executing code 

Votre code sera exécuté après 3 secondes .

Documentation: https://www.w3schools.com/jsref/met_win_settimeout.asp

+0

Votre déclaration sur un délai d'expiration qui disparaît dans une fonction est tout simplement erronée. – jfriend00

+0

Oh j'ai testé à nouveau et vous avez raison. Je suis sûr que j'ai fait face à un cas où setInterval() et setTimeout() imbriqués dans une fonction ou quelque chose d'autre disparaissent. Je vais me renseigner. – Nolyurn