浅谈Angular的$q, defer, promise
$q是Angular的一种内置服务,它可以使你异步地执行函数,并且当函数执行完成时它允许你使用函数的返回值(或异常)。defer的字面意思是延迟,$q.defer() 可以创建一个deferred实例。deferred 实例旨在暴露派生的Promise 实例,以及被用来作为成功完成或未成功完成的信号API,以及当前任务的状态。这听起来好复杂的样子,总结$q, defer, promise三者之间的关系如下所示。promise的目的是允许interested parties 访问deferred任务完成的结果。按照CommonJS的约定,promise是一个与对象交互的接口,表示一个动作的结果是异步的,而且在任何给定的时间点上可能或不可能完成。如果完成了那就相当于resolve, 如果未完成就相当于reject。不知道这样理解对不对?
下载地址
用户评论