現在是這樣,函數a是Promise非同步返回數據,其他很多函數需要用到這個數據,我現在是每個依賴這個數據的函數都要a().then()這樣處理
function a() {
return new Promise((resolve, reject) => {
....
})
}
function getsub(id) {
return a()
.then((data) => {
return .....
})
.catch((err) => {...})
}
function tree(id) {
return a()
.then((data) => {
return .....
})
.catch((err) => {...})
}
其中有一些遞歸循環依賴,複雜度增加後我感覺我要瘋了,有沒有其他好點的寫法啊?
高洛峰2017-07-05 11:07:24
可以用點函數式程式設計的寫法:
function mapData(call) {
return () => a()
.then((data) => call(data))
.catch((err) => call(null, err))
}
function sub(data, err) { ... }
function sub2(data, err) { ... }
function sub3(data, err) { ... }
const getsub = mapData(sub)
const getsub2 = mapData(sub2)
const getsub3 = mapData(sub3)