Maison  >  Questions et réponses  >  le corps du texte

javascript - Existe-t-il une fonction A qui obtient des données de manière asynchrone? Les autres fonctions qui dépendent des données obtenues par A doivent-elles être asynchrones?

C'est le cas maintenant. La fonction a est une promesse qui renvoie des données de manière asynchrone. De nombreuses autres fonctions doivent utiliser ces données. Maintenant, je dois gérer a().then() comme ceci pour chaque fonction qui repose sur ces données

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

Il existe des dépendances cycliques récursives. Lorsque la complexité augmente, j'ai l'impression de devenir fou. Existe-t-il une autre meilleure façon de l'écrire ?

黄舟黄舟2663 Il y a quelques jours905

répondre à tous(3)je répondrai

  • 高洛峰

    高洛峰2017-07-05 11:07:24

    Vous pouvez utiliser la programmation fonctionnelle pour écrire :

    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)

    répondre
    0
  • 女神的闺蜜爱上我

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

    Essayez async/await d'ES7 ?
    Ou introduisez la bibliothèque async.js, qui est commune aux front-ends et aux back-ends.

    répondre
    0
  • 迷茫

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

    Si les exigences de temps réel et d'indépendance sont très élevées, il ne semble y avoir aucune solution... Sinon, vous pouvez essayer de mettre en cache un... et voir ce que disent les autres

    répondre
    0
  • Annulerrépondre