【发布时间】:2018-02-01 04:16:17
【问题描述】:
使用 javascript 承诺,我必须创建一个需要执行以下功能的 ES6 类
list() {
if(this.isConnected){
return ActilityAPI.list().then(result => {
return result
});
}else{
return this.connect().then(() => {
return ActilityAPI.list().then(result => {
return result
});
})
}
}
如您所见,有一部分代码我需要编写几个。通过同步功能,它会更容易,比如:
list() {
if(this.isConnected) this.connect()
return ActilityAPI.list()
}
我想尝试相同的算法,但有希望。我该怎么办?
编辑
感谢 alexmac,我想尝试 ES7 的方式,所以我做了以下:
list() {
// return new Promise((resolve, reject) => {
return (async () => {
if (!this.isConnected) await this.connect();
return ActilityAPI.list()
})
}
我也尝试在 list() 之前添加 tje async,但它不会编译
【问题讨论】:
-
请注意,您的承诺中的
result => { return result }处理程序实际上什么都不做。 -
list(){ return this.isConnected? ActilityAPI.list(): this.connect().then(() => ActilityAPI.list()) } -
@Thomas 看起来连接本身就是一个承诺。
-
@JaredSmith 是的,完全正确。有什么意义?
-
@Thomas 那么为什么有一个无关的属性
isConnected?只需让this.isConnected连接函数中的承诺并链接它。
标签: javascript node.js asynchronous promise