我有兩個關於相同主題依賴視角的問題。關於同步性/異步性假設的最佳實踐
讓我們假設有一個接受接收執行函數的返回值的回調函數:
function myFunction(callback) {
//do something
callback(something);
}
現在有人調用這個函數:
myFunction(function(something) {
console.log('a');
});
console.log('b');
我的觀點是: 是它總是爲用戶(調用函數的用戶)保存以便對事件'a'和'b'的順序進行假設?結果:依賴於確切的行爲被認爲是糟糕的編碼風格嗎? (不是談論runnig時間,而是關於同步性或異步性!)有人可能會認爲myFunction
是異步的,因此'b'在'a'之前必須發生總是。
相反: 作爲設計某個功能的人,是否認爲編碼風格不好,沒有可預測的順序?也許有必要等待某個事件的發生,導致異步的回答,或者這種確切的行爲不需要等待,因此不需要異步性。 在這種情況下,添加一個process.nextTick(...)以始終具有相同的行爲是否最好?
在此先感謝!
如果開發者想要安全,他們應該在使用之前瞭解'myFunction'的行爲方式。 – 2012-02-14 18:58:17
這是一個非常外交的回答:)在那個函數的設計者的情況下是什麼? – zaphod1984 2012-02-14 19:24:01
...對下面的評論作出迴應,在用戶無法預測其行爲的情況下創建一個函數並不明智。如果您可以通過使其同步行爲來優化某個特定情況,那麼您應該將其記錄爲需要回調的異步函數。當它結束同步時,您仍然可以在準備就緒時觸發回調。 – 2012-02-14 19:37:41