gpt4 book ai didi

javascript - 理解 promise 链接 : 'then()' get's undefined parameter as the result

转载 作者:行者123 更新时间:2023-11-30 15:50:18 24 4
gpt4 key购买 nike

我开始深入研究 promises,需要你的帮助来理解为什么这段代码不能按预期工作。


这是我需要的:

在成功获取配置文件后,代码应该注销(“成功获取配置文件!”)它所做的,并返回 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;
}

enter image description here

最佳答案

您将返回第一个 promise 对象,然后再在成功的 then block 中重新分配它。您不需要这样做,只需使用这样的链接即可:

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;
}

请注意,您如何简单地返回 this.retrieveProfileInfo() 自动成为新的 promise

关于javascript - 理解 promise 链接 : 'then()' get's undefined parameter as the result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39449141/

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