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
828

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
        Über uns Haftungsausschluss Sitemap
        Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!