$q - 提供的东西

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

我们可以先来看一下 $q 这个服务提供的一些东西。在这个 app.js 里面,定义已经好了一个空白的控制器,UserController,还有一个空白的服务 ... GithubService ,我们假设这个服务提供了一些跟 Github 相关的功能,比如使用 Github 的帐户登录的功能。

myApp.controller('UserController', function () {
});

myApp.factory('GitHubService', function () {
});

在这个服务里面,我们可以先注入 $q 这个服务 ... 另外还有 $log 这个服务 ,它可以在控制台上输出一些东西。在这个服务里定义一个方法,比如叫做 _login ... 然后在返回这个方法,这样我们就可以在别的地方使用服务里定义的这个 _login 方法了。

myApp.factory('GitHubService', function ($q, $log) {
var _login = function () {
};
return {
login: _login
};
});

在这个方法里,先用一下 $q 服务的 defer() 这个方法,去创建一下Deferred 对象 ... 然后在控制台上输出这个对象 ...

var defer = $q.defer();
$log.log(defer);

在看一下 UserController 这个控制器,我们可以在这个控制器里使用 GitHubService 这个服务 ... 把它注入进来 ... 然后可以直接在这个控制器里使用 GitHubService 这个服务里面的 login 方法 ...

myApp.controller('UserController', function ( GitHubService) {
GitHubService.login();
});

这样这个控制器加载以后,就会立即去执行 GitHubService 的 login 方法 ... 也就会在控制台上输出使用 $q 创建的 Deferred 对象了 ...

在 index.html 这个文档里面,我们已经把 UserController 用到了一个 div 元素上面 ... 打开浏览器的控制台 ... 在这里你会看到这个 Deferred 对象 ...

这个对象里面有几个方法,notify ,负责通知异步处理的过程 ... reject,表示拒绝,可以用它来拒绝 promise ,还有 resovle ,用来决定要去做一些事情 ... 另外还有一个 promise 属性 ... 在这个属性里面你会看到 $$state ... 履行或者拒绝 promise 带来的内容会包含在这个属性里面,现在这里还没有什么东西。

这个 promise 属性里面,还有一个 then 这个方法 ... 一会儿我们会用到它来处理履行或者拒绝 promise 之后要做的事情。

$q - 提供的东西《 AngularJS 基础 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点