1.14.2015

Synchronous vs Asynchronous

ilustrasi
Synchronous module bekerja secara berurutan sesuai dengan perintah program. Ia tidak akan melanjutkan ke perintah selanjutnya jika perintah yang sedang ia jalankan saat ini belum selesai. Sedangkan asynchronous module bekerja tidak secara berurutan atau lebih tepatnya tidak harus menunggu perintah sebelumnya selesai. Biasanya modul asynchronous berupa callback function dari sebuah request.

Synchronous

Ini adalah contoh program synchronous di node js. Kita beri nama script.js:

// Find one document in our collection
var doc = db.coll.findOne();

// Print the result
printjson(doc);

Jika kita lihat pada source code script.js, disitu terdapat 2 perintah yang berjalan secara synchronous. Dimana statement printjson(doc) tidak akan berjalan sebelum statement var doc = db.coll.findOne() selesai dilakukan.

Jika kita coba menjalankannya, maka hasilnya seperti ini:

syncronous module
Catatan: Sebelumnya saya sudah menambahkan data pada db.coll. Sehingga muncul object tersebut dengan key 'a' dan value 'syncronous module'.

Asynchronous

Ini adalah contoh program asynchronous di node js. Kita beri nama app.js:

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {

    if(err) throw err;

    // Find one document in our collection
    db.collection('coll').findOne({}, function(err, doc) {

        // Print the result
        console.dir(doc);

        // Close the DB
        db.close();
    });

    // Declare success
    console.dir("Called findOne!");
});

Jika kita lihat pada source code app.js, disitu terdapat function callback yang dilakukan setelah melakukan koneksi ke database. Fungsi tersebut berjalan secara asyncronous. Kemudian didalamnya terdapat fungsi db.collection('coll').findOne() dengan asyncronous callback function juga, yang didalamnya terdapat perintah console.dir(doc) yang akan menampilkan object yang sudah diambil.

Jika dilihat secara urutan penulisan dua perintah console, console.dir(doc) itu lebih dulu dideklarasikan daripada console.dir("Called findOne!"). Namun didalam asynchronous, yang dipanggil terlebih dahulu adalah console.dir("Called findOne!"), Karena ketika program memanggil db.collection('coll').findOne(), program akan langsung menjalankan console.dir("Called findOne!"). Dan perintah console.dir(doc) dilakukan terakhir karena menunggu response dari db.collection('coll').findOne().

Bila kita jalankan source code diatas, maka hasilnya seperti ini:

asynchronous module
Jadi secara garis besar, itulah perbedaan antara synchronous dan asynchronous. Semoga bermanfaat.

3 comments:

  1. Thank you atas tutorialnya akhirnya saya menemukan cara mengkoneksikan nodejs ke mongodb. Hanya saja ditutorial ini menampilkan datanya masih di dalam console ya, saya akan coba explore untuk menampilkan datanya dalam versi web page.

    ReplyDelete
    Replies
    1. Sama2 mas, ada juga di artikel lain tentang bagaimana membuat crud dengan node js... contohnya ini -> http://www.blog.asepmaulanaismail.com/2014/10/membuat-hello-world-dengan-node-js-dan-express.html

      Delete
  2. Nice post,it's very informative.i found the best information.I updated my knowledge with this blog.it can help me to crack GIS jobs in Hyderabad.

    ReplyDelete