- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用现有的 TypeScript
方法,并且正在努力从 promise 中获取 errorCallback
值。 Angular 的类型定义文件中的接口(interface)如下所示:
interface IPromise<T> {
then<TResult>(successCallback: (promiseValue: T) => IHttpPromise<TResult>, errorCallback?: (reason: any) => any, notifyCallback?: (state: any) => any): IPromise<TResult>;
then<TResult>(successCallback: (promiseValue: T) => IPromise<TResult>, errorCallback?: (reason: any) => any, notifyCallback?: (state: any) => any): IPromise<TResult>;
then<TResult>(successCallback: (promiseValue: T) => TResult, errorCallback?: (reason: any) => TResult, notifyCallback?: (state: any) => any): IPromise<TResult>;
我正在使用的 TypeScript
方法调用服务并且 promise 使用返回(这有效):
public loadSavedLogin(): ng.IPromise<MyApp.Models.User> {
return this._myAppService.getUser(this.savedUserId).then((result: MyApp.Models.User) => {
if (result) {
this.userId = result.UserID;
this.userName = result.UserName;
}
return result;
});
}
问题是我不知道如何获取 errorCallback
值。如果我在 .then((result: MyApp.Models.User)
之后放置一个逗号,我会看到 Intellisense 向我显示 errorCallback
参数,但我就是无法获得任何语法的工作原理。在原始 JS
中,我在末尾有一个逗号,另一个函数接受错误值,但我不确定这个接口(interface)如何返回错误。
如果服务调用使用 IPromise
返回错误值,我该如何修改函数以获取错误值?
最佳答案
这是一个可以帮助您解决问题的简化示例。
class Test {
public _test: ng.IPromise<string>;
// This method has a return type of ng.IPromise<string>
// You must return a value of this type.
public example(): ng.IPromise<string> {
return this._test.then(
// Success
// Must return a string to be compatible with
// the ng.IPromise<string> return type
(val) => {
alert('Success');
return val;
},
// Error
// Should also return a string to be
// compatible with the return type
(reason) => {
alert('Error: ' + reason);
return '';
});
}
}
因为 example
方法返回类型是 ng.IPromise<string>
, then
中的成功函数和错误函数方法必须返回 string
为了使类型全部匹配。
在你的例子中,他们应该返回一个 MyApp.Models.User
的实例.
我怀疑你的error
函数你没有返回值 - 但这是成功函数和错误函数之间最好的通用类型 void
.
进一步的例子......在使用函数时只使用一个数组来显示最常见的类型:
var example = [
(input: string) => { return 'String'; },
(input: string) => { console.log(input); }
];
此示例中使用的最常用类型是 (input: string) => void
.看起来很奇怪 - 但它实际上是有道理的。如果调用此数组中的函数,不要期望获得返回值。
因此,只需确保您的成功函数和错误函数具有相同的返回类型,并且所有类型都会匹配您。
public loadSavedLogin(): ng.IPromise<MyApp.Models.User> {
return this._myAppService.getUser(this.savedUserId).then(
(result: MyApp.Models.User) => {
if (result) {
this.userId = result.UserID;
this.userName = result.UserName;
}
return result;
},
(reason: string) => {
return <MyApp.Models.User> null;
}
);
}
关于javascript - 从 IPromise 获取 errorCallback 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26500548/
我正在尝试以允许我运行函数但似乎无法使其工作的方式使用工厂。 在我的 Controller 中,我想调用 httpErrorHandler.statusHandlerFunction.errorCal
有没有办法为 Promise 提供默认的 errorCallback,这样,如果用户提供了 errorCallback,则默认的 errorCallback 不会被调用。 function getFo
嗨,我目前正在尝试在我的插件中调用 Successcallback 和 Errorcallback。我使用 ionic v1 似乎它显示了所有成功和错误的控制台.. 这是我使用的插件 var exec
我使用最简单的 $http.get().then 构造,但 errorCallback 从未被调用(使用 500 和 404 错误代码检查) $http.get(url,{cache: pageCac
我正在使用现有的 TypeScript 方法,并且正在努力从 promise 中获取 errorCallback 值。 Angular 的类型定义文件中的接口(interface)如下所示: inte
-- 编辑-- 我最近遇到了一件关于 promises 的奇怪事情,但我想这可能是因为它违反了 promises 的哲学。 考虑以下代码: // Assuming Auth is just a sim
我有一个来自 Magical Record 的函数,我正在尝试使用它。但是我不明白如何使用错误处理程序部分 函数是:- (void) saveErrorHandler:(void (^)(NSErro
我有一个文本字段 deviceid,我试图将该值存储到 sqlite 数据库中,然后尝试以其他形式检索它,但我收到以下错误。当我在桌面中运行它时,这工作正常,但我得到了当我尝试在phonegap应用程
在我的 Node Web 应用程序中,我在其中一个 Angular Controller 中发送 HTTP GET 请求,并且在 Express 中定义的同一路由中,在路由逻辑中的某处,我发送 HTT
我是一名优秀的程序员,十分优秀!