回调是承诺,因为手表是......习惯?

时间:2015-04-09 01:11:25

标签: angularjs promise

我假设每个人都知道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。

我的问题是

  1. 这是辉煌的,明显的,老式的,还是愚蠢的?
  2. 为什么?

0 个答案:

没有答案