我在控制台$q is not defined
中收到此错误。当我做一些研究时,我发现了一些像.q library has been deprecated
这样的东西
http://www.breezejs.com/documentation/breeze-labs/breezeangularqjs
如果是这样,那么承诺的整个概念也被弃用了,
答案 0 :(得分:25)
不推荐使用Promise。事实上,他们最近获得了相当大的动力,并被包含在下一版本的JavaScript中。
让我们看看他们说的话:
此breeze.angular.q库已被弃用。它被Breeze Angular Service所取代,它更加干净地为Angular开发提供了微风。
Breeze Angular Service告诉Breeze使用Angular的
$q
作为承诺,并使用Angular的$http
进行ajax调用。
他们所说的是微风使用Angular自己的承诺承诺,而不是使用自己的breeze.angular.q
,它使用的Q承诺比Angular使用的$q
承诺更有能力但也更重。 。这只是一个API更改。
在Angular代码中,您可以使用依赖注入获取$q
- 例如使用简单的语法:
myApp.controller("MyCtrl",function($q){
//$q is available here
});
或者,如果您想独立使用它,您可以使用服务地点并直接从注射器获取$q
,但这种情况很少见。 (如果你想要一个例子 - 让我知道,我只是不要包含那些通常表明不良做法的代码。)
答案 1 :(得分:9)
# in your console, try following code
$injector = angular.injector(['ng']);
q = $injector.get('$q');
deferred = q.defer();
# then do whatever you want