Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Es gibt eine Funktion A, die Daten asynchron abruft. Müssen andere Funktionen, die auf den von A erhaltenen Daten basieren, asynchron sein?

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?

黄舟黄舟2663 Tage vor906

Antworte allen(3)Ich werde antworten

  • 高洛峰

    高洛峰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)

    Antwort
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 11:07:24

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

    Antwort
    0
  • 迷茫

    迷茫2017-07-05 11:07:24

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

    Antwort
    0
  • StornierenAntwort