Bir Bluebird sözüne geri aramalarla yeniden deneme işlevini yeniden yazmaya çalışıyorum ama bunu yapmanın doğru yolu etrafında kafamı alamıyorum. Altta, limit karşılandığında Azure DocumentDB'yi yeniden denemek için çalışan geri arama işlevidir. Sözün kendisinde işlev kullanmaya çalışıyorum ama "O zaman" a ulaşmadan geri dönüyor. Bununla nasıl başa çıkılacağına dair herhangi bir ipucu veya bu yoldan yakalanan performanstan etkilenirse, bu şekilde takdir edilecektir. Teşekkür ederim!Bluebird Promise Yeniden Deneme BelgesiDB isteği
"readDocRetry": function(id, retries) {
var self = this;
return new Promise(function(resolve, reject){
self.client.readDocumentAsync(self.docsLink + id, null, function(err, data){
if (err) {
reject(err);
} else {
resolve(data)
}
}).then(function(results) {
console.log("ReadDocRetry result: " + results)
return results;
}).catch(function(err, headers) {
RetryError(self, id, err, headers, retries);
});
});
}
function RetryError(self, id, err, headers, retries) {
if (err && err.code) {
if (err.code === 429 && retries >= 0) {
setTimeout(function() {
self.readDocRetry(id, retries - 1);
}, Number(headers['x-ms-retry-after-ms'] || 1));
}
else if (err.code === 503 && retries >= 0) {
setTimeout(function() {
self.readDocRetry(id, retries - 1)
}, 500);
}
}
else if(err) {
console.log(err);
}else{
console.log("Err missing in RetryError");
}
}
bbCtx.readDocRetry("19").then(function(res){
console.log("Hurrah!" + res);
})
------- Sözümü yapmaya çalışıyorum geleneksel geri aramaları ile çalışma örneği ----- tabanlı
dbContext.prototype = {
readDocRetry: function (id, retries, cb) {
var self = this;
self.client.readDocument(self.docsLink + id, function (err, results, headers) {
if (err) {
if (err.code === 429 && retries >= 0) {
var aR = retries - 1;
setTimeout(function() {
self.readDocRetry(id, aR, cb);
}, Number(headers['x-ms-retry-after-ms'] || 1));
} else if (err && err.code === 503 && retries >= 0) {
var aR = retries - 1;
setTimeout(function() {
self.readDocRetry(id, aR, cb)
}, 500);
} else {
cb(err);
}
} else {
cb(null, results);
}
});
},
sizin
catch
geri arama şey işlemek gerekiyordu