use*_*001 5 asynchronous angularjs q
我正在学习Angular JS,目前我正在尝试理解承诺和异步编程,我对此有所怀疑$q.defer().我的观点如下:通常当人们使用承诺时,他们会做类似的事情,考虑到$ q已经可用
function someAsyncFunction() {
var deferred = $q.defer();
/* Do things and if everything goes fine return deferred.resolve(result)
otherwise returns deferred.reject()
*/
return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)
这到底是做什么的?当我们这样做时var deferred = $q.defer(),立即将该函数的所有执行切换到另一个线程并返回promise作为对此操作结果的引用,该操作仍然在那里执行?
这是我们在创建异步方法时应该考虑的方式吗?
Angular 的$q服务基于 Javascript 库Q。您可以在Q 文档中阅读更多相关信息,或者阅读github 存储库中的代码。我认为从文档简介中摘取的这部分解释得最好:
如果函数无法在不阻塞的情况下返回值或抛出异常,则它可以返回 Promise。Promise 是一个对象,表示函数最终可能提供的返回值或抛出的异常。Promise 还可以用作远程对象的代理来克服延迟。
| 归档时间: |
|
| 查看次数: |
3083 次 |
| 最近记录: |