我开始深入研究承诺,并需要您的帮助才能理解为什么此代码无法正常工作。
这就是我需要的:
成功检索代码后,代码应该注销('成功获取Profile!'),并返回true
作为结果,应该传递给下一个then()
元素。但是,true
代替undefined
,结果为 public verifyAuth(): angular.IPromise<boolean> {
let promise: ng.IPromise<boolean> = this._Token.getIdToken()
.then((idToken) => {
if (!idToken) {
return false;
}
else if (this._Profile.isEmpty()) {
promise = this.retrieveProfileInfo()
.then(() => {
this._$log.log('success getting Profile!');
return true;
});
} else {
return true;
}
})
.catch((error) => {
this._Token.clearToken();
this._$log.error(error);
return false;
});
return promise;
}
。
public IEnumerable<ItemTable> SearchItem(string itemName)
{
return (from i in
_connection.Table<ItemTable>()
where i.ItemName.StartsWith(itemName)
select i).ToArray();
}
答案 0 :(得分:2)
您将在稍后的成功promise
块中重新分配之前返回第一个then
对象。你不需要像这样使用链接:
public verifyAuth(): angular.IPromise<boolean> {
let promise: ng.IPromise<boolean> = this._Token.getIdToken()
.then((idToken) => {
if (!idToken) {
return false;
}
else if (this._Profile.isEmpty()) {
return this.retrieveProfileInfo()
.then(() => {
this._$log.log('success getting Profile!');
return true;
});
} else {
return true;
}
})
.catch((error) => {
this._Token.clearToken();
this._$log.error(error);
return false;
});
return promise;
}
注意,您只是return this.retrieveProfileInfo()
如何自动成为新promise
。