2015-09-04 55 views
0

我有一个异步休息电话。在调用其他所有内容后,响应将在最后被检索。在进入下一步之前,我需要回应。我计划实施诺言。 我不知道如何执行诺言在我的情况。 我的代码:

if($scope.savedDesc.length <= 0 && $scope.savedDesc != null && $scope.savedDesc != 'undefined') { 
    access.getDesc($scope.id, function(data){ 
     $scope.savedDesc = data; 
    }); 
} 

当$ scope.savedDesc设置,那么只有我要进行下一步。

请建议。 在此先感谢。

+0

调用'callback'函数,即下一步线'$ scope.saveDesc'后。 –

+0

什么是“访问”? –

+0

@gauravbhavsar:我在$ scope.savedDesc = data之后有foreach,我将在这里设置变量noteDesc。 noteDesc被传递给另一个其他呼叫。由于$ scope.savedDesc未设置,noteDesc以未定义形式传递。 – prashanth

回答

0

变化

if($scope.savedDesc.length <= 0 && $scope.savedDesc != null && $scope.savedDesc != 'undefined') { 
    access.getDesc($scope.id, function(data){ 
     $scope.savedDesc = data; 
    }); 
} 

// next step(s) here... 

if($scope.savedDesc.length <= 0 && $scope.savedDesc != null && $scope.savedDesc != 'undefined') { 
    access.getDesc($scope.id, function(data){ 
     $scope.savedDesc = data; 

     // next step(s) here... 
    }); 
} 
0

如果accessangular $resource,你可以做这样的事情:

function nextStep(){ 
    //...do something with $scope.savedDesc... 
} 

$scope.savedDesc = access.getDesc($scope.id, nextStep); 

// or 

$scope.savedDesc = access.getDesc($scope.id); 
//... (do something else) 
$scope.savedDesc.$promise.then(nextStep); 
0

可以使用callback函数来实现一步一步执行。

if($scope.savedDesc.length <= 0 && $scope.savedDesc != null && $scope.savedDesc != 'undefined') 
{ 
    access.getDesc($scope.id, function(data){ 
     $scope.savedDesc = data; 
     noteDescCall($scope.savedDesc); // call foreach inside this function with $scope.saveDesc 
    }); 
} 

// your noteDescCall function which have `foreach` loop 

function noteDescCall(savedDesc){ 
    // implementation with savedDesc ... 
} 
0

OP询问承诺。这里有一个简单的承诺链式例如:

MyAsyncRestCall() 
    .then(function(result1) { 
    // you can modify `result1` before returning it if you want 
    return result1; 
    }) 
    .then(function(result2) { 
    // `result2` is the data returned from the above `then` (e.g. `result1`) 
    // returning `result2` returns the value to the original caller 
    return result2; 
    }) 
    .catch(function(error) { 
    // handle errors here if you want to 
    return $q.reject({ message: JSON.stringify(error) }); 
    }); 

下面是关于承诺链接的好文章:http://www.syntaxsuccess.com/viewarticle/angular-promise-chaining-explained