讓我解釋一下我用一個簡單的例子的意思是: 我可以在關閉死亡/垃圾收集之前執行功能嗎?
(function(){
db.queryRows(function(row)
{
// some sophisticated async calls could present here
request.write(row)
})
require('some-cool-module').onClosureDeath(function()
{
request.end('No more data for you.')
})
})()
難道使用域或一些其他的事情要做?如果不是,這在理論上是可能的嗎?
看來,我做了一個壞的榜樣,所以我寫了另一個問題:
function getRandomInt(min, max)
{
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var server = require('http').createServer(function(request, response)
{
var atEnd = function()
{
response.end('No more randoms for you.')
};
(function(){
response.statusCode = 200;
response.setHeader('Content-Type','text/html; charset=UTF-8');
// This loop is emulating a huge sophisticated complex async
// callback delirium which cannot be easily understood and
// tracked down, and I won't get paid for its refactoring.
for(var i = 0;i < getRandomInt(0,getRandomInt(0,1000)); i++)
{
setTimeout(function()
{
response.write(String(getRandomInt(0,1000) + "<br/>"))
},getRandomInt(0,30000))
}
// What I'd wish to do:
// require('some-cool-module').onClosureDeath(atEnd)
})()
}
).listen(11111);
console.log("Running @ http://127.0.0.1:11111")
在db中是否有'on''end'...?在嘗試選擇模塊之前,我會先看看它。另外,你可以在你的函數中放一個回調函數,這可能更清潔 – DrakaSAN
我現在面臨的問題等於db中沒有'結束'事件。我實際上不知道何時何地會結束。但在封場結束時它肯定會出現。我想以某種方式使用域,但它只有'錯誤'事件。 – user619271
你使用什麼db庫?此外,嘗試回調,至少你將能夠趕上所有請求已發送 – DrakaSAN