Typescript async/await and angular $q service
Typescript async/await and angular $q service
New TypeScript async/await 功能使用 ES6 承诺。AngularJS使用$q
服务承诺,但界面略有不同。
有没有办法将 TypeScript 异步/等待功能与$q
服务承诺一起使用?
你可以让它像这样工作:
angular.module('your app')
.run(['$window', '$q', function($window, $q) {
$window.Promise = $q;
}]);
我认为您将无法直接使用它们。但是将 q promise 转换为 a++ promise 应该很容易,如下所示:
function Convert<T>(qPromise): Promise<T>
{
return new Promise<T>((resolve, reject) =>
{
qPromise.then((result: T) => resolve(result), (e) => reject(e));
});
};
最后,我使用了以下解决方法:
declare var __awaiter: Function;
(window as any).__awaiter = __awaiter; // set global __awaiter to avoid declaring default __awaiter in other files
async () => { } // dummy async function to generate __awaiter code for current file
angular.module('ts-awaiter', []).run(['$timeout', ($timeout: ng.ITimeoutService) => {
function wrap(func: Function) {
return function () {
func.apply(this, arguments);
$timeout(() => { }); // run angular digest
};
}
var oldAwaiter = __awaiter;
(window as any).__awaiter = (thisArg: any, _arguments: any, P: Function, generator: any) => {
P = function (executor: Function) {
return new Promise<any>((resolve, reject) => {
resolve = wrap(resolve);
reject = wrap(reject);
executor(resolve, reject);
});
};
return oldAwaiter(thisArg, _arguments, P, generator);
};
}]);
Comliper for Typescript 1.8 在每个使用运算符的文件中生成__awaiter
await
函数函数。我用通过自定义Promise
构造函数替换它,该构造函数在每次resolve
和reject
调用后启动摘要循环。下面是使用示例:https://github.com/llRandom/ts-awaiter
相关文章:
- 测试Angular Service解决错误回调中的promise
- 控制器无法访问Angular Service变量
- Angular Service数据未在$scope中更新
- 在Angular Service/Controller中实现安全$apply的最佳方法
- Typescript async/await and angular $q service
- 为什么要使用Angular Service来收集信息,而不仅仅是$http
- 使用带有 AngularJS(angular-websocket-service)和 Spring Boot 的 Web
- Angular-Service Array.filter vs basic for loop
- AngularJS angular-modal-service给了我一个错误
- 来自另一个模块的 Angular JS Service DI
- Angular service/value 不会从 $(document).ready() 中获取新的变量
- Angular Service中的异步定时问题
- 如何在 Angular 中将 rootScope 更改为 Service
- 在Angular Service中获取数据并将其传递给另一个控制器
- Angular Service在返回promise时抛出异常
- 将Angular Service对象绑定到控制器作用域并更新
- 如何引用Angular Service返回的数组,以便维护状态
- 如何在Angular.js指令中将service.js的内部查询结果绑定到外部变量
- Angular -将service's函数设置为带有特定参数的函数调用
- $rootScope vs. service - Angular JS