angular.js - angualrjs,$http非同步操作執行完再執行下一步該怎麼寫
大家讲道理
大家讲道理 2017-05-15 17:05:30
0
3
812

有三個步驟
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該怎麼寫

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(3)
Peter_Zhu

使用事件。不要用巢狀

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

//步骤一代码
//执行完成后在回调函数中触发
$scope.$emit('step1success');
曾经蜡笔没有小新

使用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对象
曾经蜡笔没有小新

樓主可以學習一下 $q 與 promise 物件。就如樓上所示,Angular有一個 $q.all(),你正可以用上。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板