javascript - Es gibt eine Funktion A, die Daten asynchron abruft. Müssen andere Funktionen, die auf den von A erhaltenen Daten basieren, asynchron sein?
黄舟
黄舟 2017-07-05 11:05:24
0
3
963

Dies ist jetzt der Fall. Funktion a ist ein Versprechen, das Daten asynchron zurückgibt. Jetzt muss ich a().then() so für jede Funktion verarbeiten, die auf diesen Daten basiert

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) => {...})
}

Es gibt einige rekursive zyklische Abhängigkeiten. Wenn die Komplexität zunimmt, habe ich das Gefühl, verrückt zu werden. Gibt es eine andere bessere Möglichkeit, es zu schreiben?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

Antworte allen(3)
小葫芦

可以用点函数式编程的写法:

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)
女神的闺蜜爱上我

尝试一下 ES7 的 async/await ?
或者 引入 async.js 库,前后端通用。

迷茫

如果实时性和独立性要求都很高,那好像是没什么办法...不然可以尝试缓存a...看看其他人怎么说

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage