Özel durum aslında Bluebird tarafından ele alınmaktadır. Sözlü reddetmeler, işlenmemiş istisnalar ile aynı değildir. Bunun yerine, bir setTimeout
içinde gerçek bir işlenmemiş özel durum oluşturursanız, bu nedenle Bluebird tarafından farklı bir yığında olacağı için işlenmeyecektir, etki alanınız beklendiği gibi çalışacaktır.
var Promise = require('bluebird');
var domain = require('domain');
var problem = function() {
return new Promise(function(resolve, reject){
setTimeout(function() {
throw new Error('boom!');
}, 1)
});
};
domain.create()
.on('error', function(e){
console.log("Caught Error " + e.message)
process.exit(1);
})
.run(function() {
problem().done();
});
Etki alanları kullanımdan kaldırılmıştır, bunları kullanmamalısınız. –
Bu çok yardımcı olmuyor. Evet, etki alanlarının gelecekte değiştirilebileceğini anlıyorum, ancak bugün itibariyle talepleri reddedildikten neredeyse 2 yıl sonra hâlâ çekirdekte. Etki alanları, henüz sağladıkları çok özel işlevleri yerine getirmek için henüz hiçbir şey yapılmadığı için hala kullanımdan kaldırılmayı bekliyor. –
Bu, bluebird, Q kitaplığı işlevinden beklendiği gibi vaatler ile ilgili bir sorundur. –