こんにちは、私はAngularJSでこの機能コールを確認ボタンでRESTを使用しています。保存は大丈夫です。成功またはエラーメッセージで問題が発生します。 succededの場合はループの実行後に1つの成功メッセージしか表示されないか、何度も何度もエラーメッセージが表示されるはずです。エラーが発生した場合にはisErrorフラグを使用しましたが、ループの終了前に常にif(isError == false){"が実行されます。promise.thenでforeachの後にメッセージを1つだけ表示するAngularJS
$scope.confirm = function() {
var isError = false;
var i=0;
$scope.displayedmodalcollection.forEach(function(item) {
i++;
delete item.added;
result = DataBase.update({
id: item._id,
endpoint: item._type
}, item._source).$promise.then(function(response) {
}, function(err) {
isError = true;
if (err.status === 500) {
ngToast.create({
className: 'warning',
content: String.format('Any message.', item._id)
});
}
else if (err.status === 404) {
ngToast.create({
className: 'danger',
content: '404 - other message'
});
} else {
ngToast.create({
className: 'danger',
content: 'Error'
});
}
});
});
if (isError == false){
ngToast.create({
className: 'success',
content: 'Success'
});
}
};
誰もが提案をしていますか?
// map array of update promises
var updatePromises = $scope.displayedmodalcollection.map(function(item){
// return the promise
return DataBase.update({...}).$promise.then(function(response) {
// success code
}, function(err) {
// error code
});
});
$q.all(updatePromises).then(function(){
// all promises were resolved
ngToast.create({
className: 'success',
content: 'Success'
});
});
は$ qを注入することを忘れないでくださいよう
$scope.displayedmodalcollection.forEach(function(item) {
何かの操作を行います。 おかげ
を:ここで
は、何らかのエラーが発生したかどうかをチェックする前に、すべての約束を解決するのを待つためにあなたのロジックをコーディング方法の例でありますしかしループの。 –
@JeremyJacksonああ...私はループに気付かなかった – charlietfl