我可以使用AngularJS's$q在Angular组件之外

Can I use AngularJS's $q outside an Angular component?

本文关键字:Angular 组件 可以使 AngularJS 我可以      更新时间:2023-09-26

我正在编写一个浏览器应用程序,我有一个文件可以创建一个对象并对其进行初始化。该应用程序是用AngularJS编写的,但有问题的文件是Angular生态系统之外的纯Javascript。

我想在该文件中使用promise,但由于Angular包含Q的实现,我宁愿使用它,也不愿引入另一个库。

我也在使用RequireJS。

那么,有没有一种方法可以在非Angular文件中使用$q?

您可以使用angular.injector()方法来执行此操作,该方法返回一个$injector函数,该函数可以通过其invoke()方法注入您需要的依赖项(例如$http$q)。

演示

类似这样的东西:

angular.injector(['ng']).invoke(['$q', function($q) {
  $q.when('hello world').then(function(message) {
    window.alert(message);
  });
}]);

请注意,传递给angular.injector()的数组是一个模块列表,我包含了ng模块,因为AngularJS核心依赖关系就位于此。