SORU
2 Mart 2011, ÇARŞAMBA


Yol Node.js birden fazla geri aramaları için beklemek deyimsel

Bazı temp dosyası kullanan bazı işlemler yapmanız gerekiyor sanırım. Beri Düğüm burada bahsediyoruz, bu operasyonları açıkça uyumsuz. Tüm operasyonlar için bitmesini beklemeniz deyimsel yolu nedir temp dosyası silinmiş olabilir acaba?

Burada bazı kod yapmak istediğim şey gösteriyor:

do_something(tmp_file_name, function(err) {});
do_something_other(tmp_file_name, function(err) {});
fs.unlink(tmp_file_name);

Ama ben bu şekilde yazmak, üçüncü çağrı ilk iki önce idam edilebilir dosyayı kullanmak için bir şans. Bir şekilde ilk iki garanti istiyorum aramalar zaten (onların geri çağrılan) iç içe hareket etmeden önce bitmiş aramalar (ve pratikte senkron yapma).

Geri aramaları üzerine olay yayıcılar kullanarak sayaç kayıt düşündüm alıcı olarak. Tezgahın bitmiş olayları ve sayısı kaç alacak operasyonlar hala beklemede. En son bittiğinde, silmek istiyorsunuz dosya. Ama bir yarış durumu ve bu olduğundan emin değilim riski var bu şeyler yapılır genelde.

Nasıl Düğüm insanlar bu tür sorunu çözer mi?

CEVAP
2 Mart 2011, ÇARŞAMBA


Eğer doğru anladıysam çok iyi async kütüphanede bir baksan iyi olacak sanırım. series bakın özellikle dikkat etmelisiniz. Github sayfasından: parçacıkları sadece bir kopya

async.series([
    function(callback){
        // do some stuff ...
        callback(null, 'one');
    },
    function(callback){
        // do some more stuff ...
        callback(null, 'two');
    },
],
// optional callback
function(err, results){
    // results is now equal to ['one', 'two']
});


// an example using an object instead of an array
async.series({
    one: function(callback){
        setTimeout(function(){
            callback(null, 1);
        }, 200);
    },
    two: function(callback){
        setTimeout(function(){
            callback(null, 2);
        }, 100);
    },
},
function(err, results) {
    // results is now equals to: {one: 1, two: 2}
});

Bir artı olarak, bu kütüphane de tarayıcıda çalıştırabilirsiniz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • rekjavicxxx

    rekjavicxxx

    28 EKİM 2007
  • TokShogun

    TokShogun

    6 HAZİRAN 2009
  • Videogamerz | Call of Duty

    Videogamerz

    5 NİSAN 2012