gpt4 book ai didi

javascript - AngularJS 如何在 Typescript 中使用 $q

转载 作者:搜寻专家 更新时间:2023-10-30 21:54:11 24 4
gpt4 key购买 nike

我是 AngularJs 的新手,也是 Typescript 的新手。我在 AngularJs 项目中包含了 Typescript,但无法处理返回 $q(function(){...})

的服务

我的代码如下:

  function foo(request, monitor, currentMonitorPropertys) {
var currentChart;
return $q(function (resolve) {
$http(request).success(function (chartResponse) {
...
resolve(monitor);
}).error(function(response){
...
});
});

我使用 VS2013(TypeScript),如果我像上面那样实现此方法,则会出现编译器错误:'IQService' 类型的值不可调用。您是要包括"new"吗?

那么我如何使用 Typescript 实现该功能。谢谢您的回答。

最佳答案

有几种方法可以返回 promise ... $http 每次调用 ajax 都会返回一个 promise ,$timeout 也会返回一个 promise 。

话虽这么说,您想通过 $q 基于预定事件($timeout$interval)以外的其他内容返回 promise > 你可以做到这一点......

// assume $q is injected into your service/controller/factory
// create a defer object
var defer = $q.defer();
// do something...
if (doSomething()){
defer.resolve(); //something went right
else {
defer.reject(); //something went wrong
}
//make sure you return out the promise, so the consumer can act upon it.
return defer.promise;

此外,$q 有一些很好的辅助方法来返回一个 promise,您可以在删除某些逻辑时使用这些方法;

// this will a promise that will resolve with the value provided
return $q.when({some: 'result'});

// this will return a promise that will reject with the error specified
return $q.reject('some error message');

关于javascript - AngularJS 如何在 Typescript 中使用 $q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com