我假设每个人都知道Promise是一个数据结构,它在很大程度上取代了回调,作为在Javascript中处理异步的方法。 Promise可以以有用的方式链接,缓存和操作。
Angular $ watch函数对于Angular的运行至关重要,但它需要回调并且通常具有与回调相同的缺陷。相反,使用Promise是不合适的,因为Promise的内在因素是它只被完成或取消一次。
所以我建立了一个临时命名为Habit
的类似结构。习惯就像一个承诺。您使用范围和监视表达式构造它。它不是then()
而是on()
,而是使用函数调用。只要watch-expression在范围内发生变化,就会调用该函数。
on()
的返回值是一个新习惯,将使用函数的返回值触发。如果该返回值是Promise,则在Promise完成时将触发。
例如,
util.habit(scope, "user_id")
.on(function(user_id) {
return $.ajax('/users/' + user_id)
.then(function(user) {
return user.name;
});
});
会创建一个习惯,只要user_id在作用域中发生更改就会触发,并使用新用户的名称调用其on-functions。
我的问题是