我正在尝试编写一个仅在需要时返回自定义承诺的函数。代码如下所示:
login(sp: ServerProfile): Promise<any> {
return this.logout(sp) // first logout
.then(_ => {
if (this.isAuthEnabled(sp)) {
return this._login(sp) // if yes, re-login
.then(succ => { this.utils.debug(`Logged in with: ${succ}`); this._isLoggedIn = true; })
}
else {
this._isLoggedIn = true;
return new Promise ( (resolve, reject ) => {resolve(true)}) //-> problem
}
})
}
我知道我可以将整个函数包装在一个new Promise (resolve, reject)
中,但我不想不必要地包装this._login
因为它返回一个承诺。
如果我在else{}
部分添加new Promise
,则会出现此错误:
[ts] 类型为 '(_: any) => 承诺 |Promise<{}>' 不是 可分配给类型为 '(值:任意) => void | 答应"。
啊,解决方案似乎是在手工制作的承诺中指定<any>
return new Promise <any>( (resolve, reject ) => {resolve(true)}) //-> no problem