1
在我的NodeJS有一個昂貴的功能,如:轉換的NodeJS昂貴同步任務異步系列
function expensiveCode(){
a.doExensiveOperation(1);
b.doAnotherExensiveOperation(2);
c.doADiffererentExensiveOperation(3);
d.doExensiveOperation(4);
}
使得每個子函數調用不同的參數,因此不能在循環中完成。我想扼殺這種昂貴的函數調用,使每個子呼叫在nextTick完成,如:
function expensiveCode(){
process.nextTick(function(){
a.doExensiveOperation(1);
process.nextTick(function(){
b.doAnotherExensiveOperation(2);
process.nextTick(function(){
c.doADiffererentExensiveOperation(3);
process.nextTick(function(){
d.doExensiveOperation(4);
});
});
});
});
}
這顯然難看,如果有不同的操作20線將太醜陋,甚至考慮。
我已經回顧了許多類似「async.js」的庫,但它們似乎都希望被調用的函數是異步的 - 在完成時有一個回調函數。我需要一個簡單的方法來做到這一點,而無需將我所有的代碼轉換爲'完成時的回調'方法,這似乎是過度殺傷。
4或20個昂貴的操作在做什麼?是的,通過隔開較小的同步任務來實現「expensiveCode」異步會有所幫助,但是使「a.doExpensiveOperatation」,「b.doAnotherExpiteOperation」等異步通常會更好地爲您提供服務。並努力讓所有你可以異步 - 是的,與回調 - 是慣用的節點。然後,你可以使用'async'等庫來幫助組織你的代碼,並避免回調的深層樹木(如你的第二個代碼片段)。 –