2

有幾個js庫可用於流量控制。哪個控制流庫可以與google關閉庫一起工作?

儘管在使用閉包編譯器時,我看到的編譯器在高級模式下仍然不能正常工作。

是否有任何關閉兼容的流量控制庫? 我最感興趣的是等待多個結果,而不是使代碼複雜化超過必要。

我想歸檔的是減少用戶操作的加載時間。 對於用戶的一個動作,必須對後端執行多個請求。爲了保持代碼的可維護性,目前,我一次只做一個請求,並在每個步驟後處理潛在的錯誤。

我想存檔的是,我可以一起觸發非依賴請求,而不會使錯誤處理複雜化超過必要。

我喜歡流動JS的語法:

var auth = flow.define(
    function(username, password) { 

     sys.puts("trying " + username + ", " + password); 

     this.password = password; 
     keystore.get('userId:' + username, this); 

    },function(err, userId) { 

     keystore.get('user:' + userId + ':password', this); 

    },function(err, passwordInDb) { 

     if (passwordInDb == this.password) { 
      sys.puts("Authenticated!"); 
     } 
     else { 
      sys.puts("Failed Authentication!"); 
     } 
    } 
) 

它還允許產生多個異步操作,並收集它們。 雖然如果您需要回調之間的任何狀態,狀態將存儲爲上面的「this.password」。 作爲包含範圍沒有鍵入封閉編譯器將無法在ADVANCED模式下始終如一地(從我的理解)重命名它。

所以我需要一個替代品,它具有一個類型化的容器對象,通過每個函數將其作爲參數(或此)進行推送。

+0

您應該添加一些澄清:你說的是什麼樣的流量控制的?你能舉一些不起作用的示例流控制庫嗎? – John

+0

謝謝...試圖澄清flow.js的例子 - 這在比較大小和功能時似乎相當不錯。 – marco

回答

0

通常,您可以通過爲庫創建外部文件並單獨加載代碼(或編譯代碼後連接庫)來使用具有Closure Compiler高級模式的任何庫。

+0

是的,但即使庫編譯得很好,使用庫時產生的代碼風格也不會總是沒有併發症。我已經添加了一個例子來澄清。 – marco

+0

我同意,這種方法在這裏沒有用。 – John

0

好吧,我找到了解決方案。

當我創建一個類型的容器對象,並將它傳遞給每個函數與goog.bind它的作品。

1

你可以使用Closure Library中的goog.async.Deferred嗎?它管理異步和同步工作流程。

0

我寫的Closure Library的一個非常小的流控制庫是ready.js

按說明:

手錶在多個異步操作,並觸發監聽器時全部或部分完成。

這是值得一試

相關問題