【发布时间】:2014-03-01 22:53:54
【问题描述】:
我正在学习 Angular JS,目前我正在尝试了解 Promise 和异步编程,但我对 $q.defer() 有疑问。我的观点如下:通常当人们使用 Promise 时,他们会做类似的事情,考虑到 $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;
}
这到底是在做什么?当我们执行var deferred = $q.defer() 时,它会立即将该函数的所有执行切换到另一个线程,并返回对仍在执行的该操作结果的引用的承诺?
这是我们在创建异步方法时应该考虑的方式吗?
【问题讨论】:
-
JavaScript 是单线程的(不包括网络工作者)
-
AngularJS API 中给出了非常好的解释 $q link
标签: angularjs asynchronous q