首页  >  问答  >  正文

angular.js - angualrjs,$http异步操作执行完再执行下一步该怎么写

有三个步骤
step1:$http.jsonp(url1)
step2:$http.jsonp(url2)
step3:赋值操作 ,
步骤1、2没有顺序要求,步骤3要求在1、2步骤完成后执行;

因为步骤1、2会多处被调用,不希望是

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

希望将步骤1、2封装成一个公共方法,再执行步骤3,顺序执行,angularjs应该怎么写

大家讲道理大家讲道理2738 天前777

全部回复(3)我来回复

  • 天蓬老师

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

    使用事件。不要用嵌套

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

    回复
    0
  • 曾经蜡笔没有小新

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

    使用ng自带的$q服务

    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对象

    回复
    0
  • 曾经蜡笔没有小新

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

    楼主可以学习一下 $q 与 promise 对象。就如楼上所示,Angular有一个 $q.all(),你正可以用上。

    回复
    0
  • 取消回复