recherche

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

angulaire.js - angulairerjs, comment écrire l'étape suivante après l'exécution de l'opération asynchrone $http

Il y a trois étapes
étape 1 : $http.jsonp(url1)
étape 2 : $http.jsonp(url2)
étape 3 : opération d'affectation,
Il n'y a aucune exigence de commande pour les étapes 1 et 2. 3 doit être exécuté une fois les étapes 1 et 2 terminées

 ;

Parce que les étapes 1 et 2 seront appelées à de nombreux endroits, nous ne voulons pas que ce soit le cas

步骤1.success{
   步骤2.success{
      步骤3}} 这样的写法    

J'espère encapsuler les étapes 1 et 2 dans une méthode publique, puis exécuter l'étape 3 séquentiellement. Comment dois-je l'écrire dans angulairejs

.
大家讲道理大家讲道理2800 Il y a quelques jours829

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

  • 天蓬老师

    天蓬老师2017-05-15 17:07:30

    Utilisez les événements. N'utilisez pas de nidification

    $scope.$on('step1success',function(){
        //步骤二代码
    //执行完成后在回调函数中触发
        $scope.$emit('step2success');
    });
    $scope.$on('step2success',function(){
        //步骤3代码
    //执行完成后在回调函数中触发
        $scope.$emit('step3success');
    });
    $scope.$on('step3success',function(){
        //全部执行完成
    });
    
    //步骤一代码
    //执行完成后在回调函数中触发
    $scope.$emit('step1success');

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:07:30

    Utilisez le service $q fourni avec ng

    let promises = {
        alpha: promiseAlpha(),
        beta: promiseBeta(),
        gamma: promiseGamma()
    }
    $q.all(promises).then((values) => {
        console.log(values.alpha); // value alpha
        console.log(values.beta); // value beta
        console.log(values.gamma); // value gamma
    
        complete();
    });
    // promises包含多个promise对象,当所有promise对象成功返回时,$q.all().then()中的成功方法才会被执行。
    
    //  $http返回的正是promise对象

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:07:30

    L'auteur peut en apprendre davantage sur $q et promettre des objets. Comme indiqué ci-dessus, Angular a $q.all(), que vous pouvez utiliser.

    répondre
    0
  • Annulerrépondre