Aşağıdaki kod örneğini, bir dizi sonuç üzerinde döngü yapan ve her biri için bir http isteği yapan bir komut dosyasına uygulamıştım.Dizi işlendiğinde bir söz dizisinden nasıl çıkabilirim?
Dizideki tüm öğeler işlendikten sonra komut dosyası çıkmıyor. Buna nasıl uyum sağlarım?
Benim uygulama bir API çağrısı yapar ve bir söz verir:
…
}).then(function(results) {
return sequence(results, function(result) {
// ^^^^^^
return checkSpam(result).then(function(akismet) {
// ^^^^^^
if (akismet) {
return write_spam_to_file(result);
// ^^^^^^ // assuming the write is asynchronous and returns a promise?
}
});
});
}) …
Eğer don':
ilk pasajı aksine....
}).then(function(results){
sequence(results, function(result){
checkSpam(result).then(function(akismet){
if(akismet) {
//console.log('spam returned from checkspam');
write_spam_to_file(result);
} else {
//console.log('no spam returned from checkspam');
}
})
});
}).catch(function (e) {
console.log('Error occurred:');
console.log(e);
});
function sequence(array, callback) {
return array.reduce(function chain(promise, item) {
return promise.then(function() {
return callback(item);
});
}, Promise.resolve());
}
function checkSpam(entry) {
var akismetPromise = new Promise(function resolver(resolve, reject) {
akismet.checkSpam({
user_agent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1',
referrer: 'http://google.com',
user_ip: entry.ip,
comment_author: entry.poster,
comment_content: entry.message,
comment_type: 'forum-post'
}, function (err, spam) {
if (err) reject(err);
resolve(spam);
});
});
return akismetPromise;
}
"Çıkmıyor" ile tam olarak ne demek istiyorsunuz? Düğüm kaçmayacak mı demek istiyorsun? Bunun yerine, akismet ya da ne kullanıyor olursanız olun, vaatlerden kaynaklanmıyor. – Bergi
@Bergi Sözler için yeniyim, yanlış bir şey yapıp yapmadığımdan emin değildim. Herhangi bir ışığı tutması durumunda biraz daha fazla kod ekledim. Bir göz attığın için teşekkürler. – codecowboy
Diziler arasında döngü yaparken, yinelemeyi durdurmak için döngü yönteminin içinden yanlış döndürebilirsiniz. – Silkster