REST API verilerini (kitaplık isteğini kullanarak) isteyerek bazı veriler alan bir düğüm komut dosyası yazdım. O kadar gibi fonksiyonların bir çift oluşur:'bu' sorunların async ve request gibi düğüm kütüphaneleri ile nasıl çözüleceğini
var data = { /* object to store all data */ },
function getKloutData() {
request(url, function() { /* store data */}
}
// and a function for twitter data
Ben getirilirken sonra bazı şeyler yapmak istiyorum çünkü tüm tüm şöyle işlevlerini getirme çalıştırmak için kütüphane asenk kullandı:
async.parallel([ getTwitterData, getKloutData ], function() {
console.log('done');
});
Bu
function Fetcher(name) {
this.userID = ''
this.user = { /* data */ }
this.init();
}
Fetcher.prototype.init = function() {
async.parallel([ this.getTwitterData, this.getKloutData ], function() {
console.log('done');
});
}
Fetcher.prototype.getKloutData = function(callback) {
request(url, function() { /* store data */ });
};
Bu zaman uyumsuz çünkü çalışmaz ve bunu değiştirmek istiyoruz: tüm ancak ben de aynı anda birden çok hesabı getir böylece bir nesne modeli içindeki her şeyi koymak istedim, gayet iyi çalışıyor bağlamı.
Fetcher.prototype.init = function() {
async.parallel([ this.getTwitterData.bind(this), this.getKloutData.bind(this) ], function() {
console.log('done');
});
}
Fetcher.prototype.getKloutData = function(callback) {
function saveData() {
/* store data */
}
request(url, saveData.bind(this);
};
temel yanlış falan mı yapıyorum: Ben onun etrafında alabilir tek yolu zaman uyumsuz ve istek yoluyla ben geçmesi herşeyi bağlama gereğidir? Bence senaryona geri dönüp bunu child_processes'a bırakmanın çok fazla yüke yol açtığını düşünüyorum.
Underscore kütüphanesi bu daha az ağrılı hale getirir bindAll' 'adlı yararlı bir işlevi vardır. Ve eğer CoffeeScript'i seçerseniz, yöntemleri sadece yağ oku ile tanımlayabilirsiniz ve hiç bir şekilde açık bir bağlayıcılık yapmak zorunda kalmayacaksınız. –