在許多其他語言中,答案會涉及線程,但由於js不支持線程,所以您必須使用進程來創建異步返回,就像您所描述的那樣。
在您的應用中,您將調用REST/Web API函數spawn a child process,該函數被調用並負責將結果返回給客戶端。該方案將解耦您對刪除查詢執行時間的依賴關係。無論孩子進程在2秒鐘還是2分鐘內運行,您的客戶都不會知道差異,就像他/她想要的一樣,結果似乎幾乎是立竿見影。
有一些簡單的樣品和其他資源,如this one和this one等可用。從運行的NodeJS子進程
簡單的代碼示例:
var exec = require('child_process').exec;
exec('node -v', function(error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
你可能不關心,甚至需要輸入/輸出/錯誤流,以便您的代碼看起來更簡單。事情是這樣的:
var exec = require('child_process').exec;
exec('node -v', function() {
// put your delete code here
});
這部分添加和以下意見修改:
我知道發動SQL Server中的異步任務的唯一方法是安排查詢,存儲過程等的執行但這是一個醜陋的黑客。有本地API可以讓你從客戶端以編程的方式執行它,但是你回到了你開始的地方。
無論如何,我建議不要在SQL中實現此功能,因爲您將在UI/UX和後端之間創建緊密耦合。我不認爲深入探究node.js對於實現子進程解決方案是必要的。這非常簡單,特別是如果你不關心結果。簡單的火和忘記。
好的,謝謝。這是信息。但是,這是否意味着無法在SQL級別執行此操作?我不想深入Node.js來處理它。 – dthree
@ dc2:我知道在SQL Server中啓動異步任務的唯一方法是計劃查詢,sproc等的執行。但這是一個醜陋的黑客攻擊。有本地API可以讓你從客戶端以編程的方式執行它,但是你回到了你開始的地方。無論如何,我建議不要在SQL中實現此功能,因爲您將在UI/UX和後端之間創建緊密耦合。而且我不確定你有多深入Node.js來完成這個過程。這非常簡單,特別是如果你不關心結果。簡單的火和忘記。 –
是的,我可能會在我的REST請求中拋出一個參數,指出「不要等待響應」。這應該相當簡單。絕對不會做這個工作日程表破解! – dthree