SORU
1 AĞUSTOS 2011, PAZARTESİ


Nasıl Node.js için zaman uyumsuz fonksiyonlar yazmak

Asenkron fonksiyonlar yazılması gerektiği hakkında araştırma yapmaya çalıştım. Pek çok döküman Keşfet bir sürü sonra, hala anlayamıyorum.

Nasıl Düğüm için zaman uyumsuz fonksiyonlar yazılır? Nasıl hata Olay işleme doğru şekilde uygulamak gerekir?

Benim soru sormak için başka bir yol olmalı: Nasıl aşağıdaki işlevi algılamalıyım?

var async_function = function(val, callback){
    process.nextTick(function(){
        callback(val);
    });
};

Ayrıca, buldumthis question on SO("Nasıl node.js? engellenmeyen zaman uyumsuz bir fonksiyon oluştururum") ilginç. Henüz cevaplanmış oldu gibi hissetmiyorum.

CEVAP
1 AĞUSTOS 2011, PAZARTESİ


Asenkron fonksiyonlar asenkron IO kafa karıştırıcı gibi görünüyor. node.js asenkron engellenmeyen olmayan çünkü IO IO iyidir engelleme kullanır. Gitmek olduğunu anlamanın en iyi yolu ryan dahl tarafından bazı videolar izle.

Nasıl Düğüm için zaman uyumsuz fonksiyonlar yazılır?

Sadece normal fonksiyonlarını yazmak, tek fark derhal idam ama geri aramalar çevresinde değil.

Nasıl hata Olay işleme doğru şekilde uygulamak gerekir

Bir ile bir geri ver API ilk değişken olarak hata genellikle. Örneğin

database.query('something', function(err, result) {
  if (err) handle(err);
  doSomething(result);
});

Ortak bir kalıptır.

Başka bir yaygın desen on('error'). Örneğin

process.on('uncaughtException', function (err) {
  console.log('Caught exception: '   err);
});

Düzenleme:

var async_function = function(val, callback){
    process.nextTick(function(){
        callback(val);
    });
};

Yukarıdaki gibi çağrıldığında işlev

async_function(42, function(val) {
  console.log(val)
});
console.log(43);

42 uyumsuz olarak konsola yazdırmak. Özellikle process.nextTick geçerli eventloop çağrı yığını boş sonra patlar. Bu yığın async_function console.log(43) yayınlandıktan sonra boş Ara. 43 42 izledi basıyoruz.

Muhtemelen olay döngüsü hakkında biraz araştırma yapmalısın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008
  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009
  • steeletraining

    steeletraini

    28 NİSAN 2010