有几个js库可用于流量控制。
虽然在使用闭包编译器时,我看到的那些在高级模式下与编译器不兼容。
是否有任何与闭包兼容的流量控制库? 我最感兴趣的是等待多个结果,而不会使代码复杂化。
我要归档的是减少用户操作的加载时间。 对于用户的一个动作,必须对后端进行多个请求。为了保持代码的可维护性,此刻,我一次只执行一个请求,并在每个步骤后处理潜在的错误。
我想要存档的是,我可以一起触发非依赖请求,而不会使错误处理复杂化。
我喜欢flow 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”一样存储。 因为没有输入包含范围,所以在高级模式下,闭包编译器将无法一致地重命名它(根据我的理解)。
所以我需要一个替代品,它有一个类型化的容器对象,通过每个函数作为参数(或者这个)被推送。
答案 0 :(得分:1)
您可以使用Closure Library中的goog.async.Deferred
吗?它管理异步和同步工作流程。
答案 1 :(得分:0)
通常,您可以使用Closure Compiler高级模式的任何库,方法是为库创建一个extern文件并单独加载代码(或在编译代码后连接库)。
答案 2 :(得分:0)
好的,我找到了解决方案。
当我创建一个类型化的容器对象并使用goog.bind将它传递给每个函数时,它可以正常工作。
答案 3 :(得分:0)