私は、約束したサーバーコールの動作を実装しようとしています。Javascript - 約束の後にリダイレクト
サーバーからの返信が「成功」の場合、「成功」ページにリダイレクトします。「失敗」の場合は「失敗」ページにリダイレクトします。
現時点では、レスポンスが待たれておらず、ブラウザがリダイレクトされています。より前にはが返されます。サーバからの応答がありますが、成功か失敗かは関係ありません。
私は間違っていますが、どうすれば解決できますか?ここで
は、私のコードの関連する部分である:
var ch_item;
Payment.postInvoice(dataObj, $rootScope.usertoken).then(function(res){
if (res.message === "success") {
setTimeout(function() {
var payment_details = res.data;
User.getUserById(res.data.stylist_uuid, res.data.customer_uuid).then(function (stylist) {
ch_item = TC_Service.getChatCredentials(stylistInfo.uid, $rootScope.userId, $rootScope.usertoken, dataObj.request_uuid);
openModelAlert("Thank you for your booking!");
$location.path('/success');
});
}, 500);
} else {
setTimeout(function() {
openModal("Sorry, please come back later.");
$location.path('/failure');
}, 500);
}
$modalInstance.dismiss('cancel');
$location.path('/default');
}, function() {
console.log("Something went wrong with the payment, the response is: "+res.message);
});
はみんな私を助けて:)約束を返すとき
は
V.
「と私は、サーバーからの応答を取得する前にブラウザがリダイレクトされる」 ''「/デフォルト」にリダイレクトされていますか? '$ location.path( '/ default');の目的は何ですか? – guest271314
2番目のコールバックは引数 'res'を使用しますが、現在は引数を受け取りません。 2番目のコールバックに 'err'という引数を実際に追加し、' res'の代わりにそれを使用するべきです。これらは引数の単なる名前なので、あなたが望むものを実際に使うことができます。しかし、慣例により、 'onRejected()'コールバックは 'err'という引数を取るべきです。 – fvgs
回答がありますか?これが問題であれば、約束は機能しておらず、このコードはそれとは関係ありません。また、角度のsetTimeoutを使用しているときに角度で同期されない場合は、$ timeoutを使用することができます。 –